Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] Questo programma ha eseguito un'operazione non valida e verrà terminato

    Dovrei costruire un programmino che mi legga 6 float scritti su un file di testo (ad ogni nuova riga inizia il nuovo numero). Ho provato con questo codice:
    codice:
    #include <stdio.h>
    
    void getposr(float *par1,float *par2,float *par3,float *par4,float *par5,float *par6);
    void main();
    
    void main()
    {
    float par1,par2,par3,par4,par5,par6;
    getposr(&par1,&par2,&par3,&par4,&par5,&par6);
    printf("pos1=%f\n",par1);
    printf("pos2=%f\n",par2);
    }
    
    void getposr(float *par1,float *par2,float *par3,float *par4,float *par5,float *par6);
    {
    FILE *f_dati;
    f_dati=fopen("c:\\dati.txt","r");
    fscanf(f_dati,"%f\n%f\n%f\n%f\n%f\n%f",*par1,*par2,*par3,*par4,*par5,*par6);
    }
    ma in win98 mi genera il messaggio di errore scritto in oggetto: qualcuno saprebbe dirmi da cosa dipende? Potete provare a compilarlo nel vostro s.o. e dirmi se il problema persiste?

  2. #2
    Così come è scritto il programma non funziona, cioè non assegna niente ai puntatori delle variabili. Scanf per assegnare deve usare il carattere &.
    prova a sostituire l'ultima riga con

    fscanf(f_dati,"%f\n%f\n%f\n%f\n%f\n%f",&*par1,&*pa r2,&*par3,&*par4,&*par5,&*par6);

    e poi su

    void getposr(float *par1,float *par2,float *par3,float *par4,float *par5,float *par6);

    togli il ; alla fine che non serve

    Così a me funziona

    Ciao

    Eraser

  3. #3
    Oppure così.... ricordati che il main non vuole la dichiarazione preventiva come le altre funzioni.

    Ciao


    codice:
    #include <stdio.h>
    
    void getposr(float *par1,float *par2,float *par3,float *par4,float *par5,float *par6);
    
    int main()
    {
    float par1,par2,par3,par4,par5,par6;
    getposr(&par1,&par2,&par3,&par4,&par5,&par6);
    printf("pos1=%f\n",par1);
    printf("pos2=%f\n",par2);
    printf("pos3=%f\n",par3);
    printf("pos4=%f\n",par4);
    printf("pos5=%f\n",par5);
    printf("pos6=%f\n",par6);
    }
    
    void getposr(float *par1,float *par2,float *par3,float *par4,float *par5,float *par6)
    {
    FILE *f_dati;
    f_dati=fopen("c:\\temp\\prova\\dati.txt","r");
    
    fscanf(f_dati,"%f\n%f\n%f\n%f\n%f\n%f",par1,par2,par3,par4,par5,par6);
    }

  4. #4
    Originariamente inviato da anatroccolo
    ricordati che il main non vuole la dichiarazione preventiva come le altre funzioni.
    giusto infatti l'avevo tolto quando ho riprovato il programma ma mi ero scordato di farglielo notare

  5. #5
    vi trovate d'accordo, poi alla fine sulla funzione fondamentale (scanf) uno mette *par e l'altro &*par (ma &*par non è lo stesso di par? ).

    Io ho provato entrambi i modi e continua a non funzionare.. ma ripeto: il problema non è che scanf non assegna niente, il problema è che sto programma crea un errore che forza la chiusura dell'applicazione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.