2016-11-13 2 views
-1

J'ai beaucoup de problèmes à faire cette tâche. J'ai un txt avec une seule ligne de mots séparés par des virgules. Je dois lire ceci et le mettre dans un tableau. Jusqu'ici, j'ai essayé d'utiliser strtok() mais cela me donne juste des erreurs. Voici mon code:comment puis-je lire un fichier .txt séparé par des virgules en C?

#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 
#include<omp.h> 
int main(){ 
char string[5000],list[200],*token,s=", "; 
int i; 
FILE *lista; 
    lista=fopen("lista.txt","r"); 
    i=0; 
    token=strtok(string,s); 
    strcpy(list[i],token); 
    while(fscanf(lista,"%s",string)!=EOF){ 
     token=strtok(NULL,s); 
     strcpy(list[i],token); 
     i=i+1; 
    } 
    fclose(lista); 
} 

Il me donne l'erreur "expectig char * restreindre" Je suis vraiment d'idées. BTW: Je suis sous Linux

+2

s = 'char de "" 'est pas une chaîne: vous manque un' '*. Mon compilateur me le dit même comme le premier avertissement. – Evert

+0

Vous pouvez trouver la solution ici - http://stackoverflow.com/questions/26443492/read-comma-separated-values-from-a-text-file-in-c –

+0

J'ai juste essayé ce que vous avez dit mais ça ne marche pas t changer quoi que ce soit, la même erreur apparaît. char * restreint mais l'argument est de type char. – user7151467

Répondre

1

Il y a beaucoup de choses étranges dans votre code, mais je suppose que, vous voulez quelque chose comme ceci:

char string[5000], *list[200], *token; 
char * s = ","; 
int i; 
FILE *lista; 
lista = fopen("C:\\File.txt", "r"); 

int MAX_FILE_SIZE = 1000; 
char * buffer = (char*)malloc(sizeof(char)*MAX_FILE_SIZE); 
fread(buffer, sizeof(char), MAX_FILE_SIZE, lista); 

list[0] = strtok(buffer, s); 
for (int i = 1;; i++) 
{ 
    list[i] = strtok(NULL, s); 
    if (list[i] == NULL) 
    { 
     break; 
    } 
} 

fclose(lista); 

Ce qui est étrange/faux dans votre code:

  • vous passez char* string en fonction strtok, mais cette variable est uninitialised lors du passage
  • vous avez le pointeur de fichier lista, mais vous jamais lu de ce fichier
  • Vous avez la variable list qui est un tableau de 200 caractères, mais je suppose que vous voulez avoir list variable une liste de chaînes
  • strtok Mange deux paramètres, const char * inputString et const char * delimiter. Donc, votre variable s devrait être const char *