如何读取以逗号分隔的.txt文件?
问题描述:
我在做这个任务时遇到了很多问题。我有一个只有一行用逗号分隔的单词的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的
答
有在你的代码中的许多奇怪的事情,但我猜,你想是这样的:
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 *
'char s =“,”'不是字符串:你错过了一个'*'。第一次警告时,我的编译器甚至告诉我。 – Evert
你可以在这里找到解决方案 - http://*.com/questions/26443492/read-comma-separated-values-from-a-text-file-in-c –
我只是试过你说的,但它doesn'不改变任何东西,同样的错误出现。预期的char *限制,但参数是char类型。 – user7151467