2016-11-13 92 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 *