2016-11-13 175 views
-1

我在做这个任务时遇到了很多问题。我有一个只有一行用逗号分隔的单词的txt。我必须读取它并将其放入数组中。 到目前为止,我尝试使用strtok(),但它只是给了我错误。这里是我的代码:如何读取以逗号分隔的.txt文件?

#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); 
} 

它给我的“expectig字符*限制”的错误 我认真的想法。 BTW:我在Linux的

+2

'char s =“,”'不是字符串:你错过了一个'*'。第一次警告时,我的编译器甚至告诉我。 – Evert

+0

你可以在这里找到解决方案 - http://stackoverflow.com/questions/26443492/read-comma-separated-values-from-a-text-file-in-c –

+0

我只是试过你说的,但它doesn'不改变任何东西,同样的错误出现。预期的char *限制,但参数是char类型。 – user7151467

回答

1

有在你的代码中的许多奇怪的事情,但我猜,你想是这样的:

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); 

有什么奇怪/错误的代码:

  • 你传入char* string到strtok的功能,但这个变量是未初始化的传递
  • 时,您有文件指针lista,但你永远不从这个文件中读取
  • 你有可变list这是200个字符数组,但我想你想拥有可变list为字符串
  • 的strtok 两个参数,为const char * inputString,并为const char *分隔符的列表。所以你的变量s应该是const char *
相关问题