Je lis un fichier CSV avec C et je veux stocker les jetons de strtok() dans un tableau. D'une manière ou d'une autre, quand le fichier CSV a plusieurs lignes, je n'obtiens pas la sortie correcte des jetons. Le fichier CSV ressemble à ceci (seulement deux lignes pour cet exemple, le fichier réel aura plus de 100 lignes):strtok() n'imprime pas la valeur correcte
abc,def,ghi
jkl,mno
Mon code est:
void main() {
FILE *fp;
fp = fopen("simple.csv", "r");
const char s[2] = ",";
char *token;
char *out[5];
int i = 0;
if (fp != NULL)
{
char line[50];
while (fgets(line, sizeof line, fp) != NULL)
{
token = strtok(line, s);
//for (token; token != NULL; token = strtok(NULL, ","))
while (token != NULL)
{
out[i++] = token;
//printf("%s", token);
token = strtok(NULL, s);
}
printf("%s\n", out[0]);
}
//for (i = 0; i < 5; i++)
fclose(fp);
}
else {
printf("error opening file");
}
}
Je veux chaque virgule délimitée par une chaîne à être stocké dans un tableau à travers une boucle. Quand j'imprimer le 1er élément du tableau (out[0]
), la sortie est:
abc
jkl
alors que je pensais que ce serait juste le jeton:
abc
Quelqu'un peut-il s'il vous plaît laissez-moi savoir quel est le problème?
Vous utilisez le * même * 'tampon pour * chaque coût média *' fgets'. Alors, bien sûr, les résultats sont écrasés à chaque ligne d'entrée. – kaylum
Je suis un débutant. pouvez-vous s'il vous plaît dites-moi comment résoudre ce problème? –
oui ce sont les premières colonnes. Je voudrais stocker chacune des chaînes dans le fichier CSV dans un tableau. –