Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - [C] Come si sposta a capo il cursore nel C
Forum - C/C++ - [C] Come si sposta a capo il cursore nel C

Avatar
hasmet21 (Normal User)
Newbie


Messaggi: 1
Iscritto: 06/09/2008

Segnala al moderatore
Postato alle 12:14
Sabato, 06/09/2008
Salve ho un programma in C che legge da file dei dati, legge per prima cosa un numero intero,poi dovrebbe andare a capo e leggere due stringhe e un altro numero intero fino alla file del file, ma al primo giro del while non mi legge in maniera giusta la riga, non esiste una funzione tipo fseek per dire al programma di spostare il cursore della lettura a capo??? Vi posto un pezzo del codice
Codice sorgente - presumibilmente C++

  1. typedef struct{
  2.     char cognome[41],numero[16];
  3.     int data;
  4.     }tel;
  5. FILE *file1;
  6. tel *vett;
  7. int i=0,sinct;
  8. file1=fopen("TEL.TXT","r");
  9. vett=(tel*)calloc(1,sizeof(tel));
  10. fscanf(file1,"%d",&sinct);
  11. while(!feof(file1)){
  12.        fscanf(file1,"%s %s %d",vett[i].cognome,vett[i].numero,&vett[i].data);
  13.         i++;
  14.        vett=realloc(vett,1);
  15.        }
  16. dimt=i;



Il file da cui legge ha un intero come primo carattere, poi c'è un \n e poi ha il formato:
<cognome> <numero> <data>

Penso che sia un problema che non mi legge correttamente il \n, però non escludo che potrebbe essere anche altro

PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 18:08
Sabato, 06/09/2008
non ho capito bene come è strutturto il file.
in questo modo?
1
mone 123456 1991

la data ad esempio, quale è il formato? di certo non puoi mettere un data del tipo 01/01/2009 in un int. Quindi ho pensato sia solo l'anno.
Comunque ho scritto il codice:

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct tel
  5. {
  6.         char cognome[41];
  7.         char numero[16];
  8.         int data;
  9. };
  10.  
  11. int main()
  12. {
  13.         FILE *fp;
  14.         tel* rub;
  15.         int val,i=0;
  16.  
  17.         rub=(tel*)calloc(1,sizeof(tel));
  18.         fp=fopen("C:\\rubrica.txt","r");
  19.         while(!feof(fp))
  20.         {
  21.                 fscanf(fp,"%d",&val);
  22.                 fscanf(fp,"%s %s %d",rub[i].cognome,rub[i].numero,&rub[i].data);
  23.                 i++;
  24.         }
  25.  
  26.         for(int i=0;i<2;i++)
  27.                 printf("%s,%s\n",rub[i].cognome,rub[i].numero);
  28.  
  29.         free(rub);
  30.         return 1;
  31. }


Ultima modifica effettuata da Overflow il 06/09/2008 alle 18:09
PM Quote