如何在C中读取用逗号分隔的.txt文件?

时间:2016-11-13 00:42:26

标签: c archive

我在完成这项任务时遇到很多问题。我有一个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中

1 个答案:

答案 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作为字符串列表
  • strtok 两个参数,const char * inputString和const char * delimiter。所以你的变量s应该是const char *