Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    28

    [C] programma lettura per righe da file - errori di compilazione

    Salve a tutti, ho cercato di scrivere un programma che mi legge per righe da due file A e B di testo i loro dati organizzati in due colonne (la prima colonna numerica "timestamp" e la seconda di strighe "AP"), che elaboro con delle operazioni e restituisco su altri due file di testo in uscita. Mi da errori di compilazione (tipo syntax error before '/' token), non so se è perchè ci sono errori o devo impostare qualcosa nel compilatore Dev-C++ IDE.
    Grazie se qualcuno può provarlo.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    
    int main(int argc, char *argv[])
    {
      FILE *fpa, *fpb, *fpouta, *fpoutb, *fpab, *fprab;
      char *nomefilein;
      int r, s, p, i, a, b;
      int long timestamp, time_ona, time_offa, time_onb, time_offb; 
      int long timeavera, timeaverb, timeroama, timeroamb;
      int long time_on, time_off, time_associa, time_ricorre, time_prec;
      char *APa, *APb;                                   // oppure con i vettori
      char c;
      
      
      
      printf("Inserire il nome del file A:\n");
      scanf("%s", &nomefilein);
      fpa=fopen(nomefilein, "r");
           if(fpa==NULL){printf("Impossibile aprire il file\n");
                         exit(1);
                        }  
       
                        
      while((a = getc(fpa))!= EOF)
      {   
          r=0;
          do{                                              // Read line file A
               while(c!=' ')                               // Read timestamp A
               {  timestamp=0;                 
                  for(i=0; i<10; i++)
                     {  fscanf(fpa, "%c", &c);
                        timestamp+=(c-'0')*power(10,9-i);
                     } 
               }
               fscanf(fpa, "%s", &APa);                    // Read AP  A
               r=0 ? time_ona=timestamp : r++;           
            } while(APa != "OFF");
            
            time_offa=timestamp;
            
            if(r=0){ timeavera=time_offa-time_ona;         //formula empirica
                     fpouta=fopen("mediaA.txt", "a");      //stampo risultati A out
                     fprintf(fpouta, "%10d\n", timeavera); //tempo medio utente A
                     close(fpouta);
                   }
              else { timeroama=time_offa-time_ona;         //tempo roaming A
                     fpouta=fopen("roamA.txt", "a");
                     fprintf(fpouta, "%10d\n", timeroama);
                     close(fpouta);
                   } 
            
      
         printf("Inserire il nome del file B:\n");
         scanf("%s", &nomefilein);
         fpb=fopen(nomefilein, "r");
             if(fpb==NULL){printf("Impossibile aprire il file\n");
                           exit(2);
                          }                     
                        
         while((b = getc(fpb))!= EOF)
         {   p=0;
             s=0;
             do{                                          // Read line file B
                 while(c!=' ')                            // Read timestamp B
                 {  timestamp=0;                 
                    for(i=0; i<10; i++)
                       {  fscanf(fpb, "%c", &c);
                       timestamp+=(c-'0')*power(10,9-i);
                       } 
                 }
                 fscanf(fpb, "%s", &APb);                  // Read AP  B
                 s=0 ? time_onb=timestamp : s++;           
               } while(APb != "OFF");
            
             time_offb=timestamp;
            
             if(s=0){ timeaverb=time_offb-time_onb;        //formula empirica
                      fpoutb=fopen("mediaB.txt", "a");     //stampo risultati B out
                      fprintf(fpoutb, "%10d\n", timeaverb); //tempo medio utente B
                      close(fpoutb);
                    }
               else { timeroamb=time_offb-time_onb;          //tempo roaming B
                      fpoutb=fopen("roamB.txt", "a");
                      fprintf(fpoutb, "%10d\n", timeroamb);
                      close(fpoutb);
                    } 
              
             if(APa=APb  &&  time_offb>time_ona  &&  time_onb<time_offa)    
               { time_on = (time_ona > time_onb) ? time_ona : time_onb;      //max
                 time_off = (time_offa < time_offb) ? time_offa : time_offb; //min
                 time_prec = time_off;
                 time_associa = time_off-time_on;
                 fpab=fopen("AB.txt", "a");                //tempo di associaz. A B
                      fprintf(fpab, "%10d\n", time_associa);
                      close(fpab);
                 if(p>0){time_ricorre=time_on-time_prec;   //tempo ricorrenza assoc.
                         fprab=fopen("RAB.txt", "a");
                         fprintf(fprab, "%10d\n", time_ricorre);
                         close(fprab);
                        }
               } 
      
             p++;                                      // contatore righe di B
         }  
         fclose(fpb);
      }    
      fclose(fpa);
    
              
      system("PAUSE");	
      return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    in C i commenti non si scrivono con i doppi /

    si usa il

    /* commento */

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    28
    OK, grazie, pensavo andasse bene con // perchè il compilatore me lo garficava in corsivo.
    Adesso mi da solo un errore alla riga 91.

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    alcuni compilatori lo accettano altri no.. quale usi?

    a saperlo qual'è la riga 91

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    28
    Uso il DEV-C++ IDE,
    adesso mi da "segmentation fault".

  6. #6
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    se puoi cambialo.. è vecchio e non più sviluppato..

    controlla i puntatori allora

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    E controlla anche che questa

    if(APa=APb

    non sia causa di problemi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    che non è l'unica assegnazione usata al posto di una condizione nel codice

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Eh gia' ...

    if(r=0)

    if(s=0)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Un classico come più volte ho segnalato anche in questo forum:
    http://www.isidoroghezzi.net/assegna...r_sbaglio.html

    insomma nei confronti mettere la costante a sinistra, e non si sbaglia mai più!
    ;-)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.