我在完成这项任务时遇到很多问题。我有一个txt,只有一行用逗号分隔。我必须读这个并把它放在一个数组中。 到目前为止我尝试使用strtok()但它只是给我错误。这是我的代码:
#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 char * restrict”错误 我严重缺乏想法。 顺便说一句:我在Linux中
答案 0 :(得分: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
作为字符串列表s
应该是const char *