Stream di un file csv, strtok problema

di il
3 risposte

Stream di un file csv, strtok problema

Ho un file csv in cui nel primo campo è contenuto il nome del comune nel secondo il numero degli abitanti, ho un problema per il salvataggio del file in un array di strutture:
typedef struct {
			char nomecomune[30];
			int popolazione;
		} dato ;
 dato dati[ARRAY_MAX];
		char buf[30];
		char *token;
		char *res;
		char appoggio[30];
		int i=0;
	
		FILE *fp;
		fp = fopen("Elenco-comuni-italiani.csv", "r");
		printf("sto aprendo il file\n");
		while (!feof(fp))
		{
			res=fgets(buf, 100, fp);
			token=strtok(buf,";");
			strcpy(dati[i].nomecomune, token);
			
			
			

		}
dopo questo punto non so continuare
fp è il nome dello stream.
dati il nome dell'array di strutture, manca il campo popolazione della struttura da riempire

3 Risposte

  • Re: Stream di un file csv, strtok problema

    Per cominciare, perché se il tuo spazio di memorizzazione è di 30 byte chiami fgets() con una "capienza" massima di 100 bytes? Rischi lo "sfondamento" dell'array!

    char buf[30];
    fgets(buf, 100, fp);

    Piuttosto...

    char buf[30];
    fgets(buf, 30, fp);

    Oppure...

    char buf[100];
    fgets(buf, 100, fp);
  • Re: Stream di un file csv, strtok problema

    Si scusami, non me ne ero accorto.
  • Re: Stream di un file csv, strtok problema

    Perché ti scusi, mica hai ucciso qualcuno!

    Usa ancora strtok(), quindi sscanf().
    Ti consiglierei anche di usare strncpy(), non strcpy.
    Controlla anche il resto, che mi sa che ti è "scappato" qualcosa, e attento ai sempre possibili "sfondamenti".
Devi accedere o registrarti per scrivere nel forum
3 risposte