如何从文件中读取不同类型的数据

时间:2017-10-19 11:19:11

标签: c arrays

我有一个包含string,int和double的文本文件。像这样:

  

Asher 10 14.5

     

Julia 14 15.5

我需要将这些数据读取到3个独立的数组中。 C没有字符串数组,所以我需要char数组,int数组和double数组。我的代码:

const int num = 18; //number of data.txt lines
char col_one[15];
int col_two;
double col_three;
int c;
int numberArray[num];
char *nameArray[num];
double doubleArray[num];
int size = 0;
FILE *file;
file = fopen("data.txt", "r");
if (file) {
    while ((c = getc(file)) != EOF)
    {
        fscanf(file, "%s %d %lf", &col_one, &col_two, &col_three);
        nameArray[size] = col_one;
        numberArray[size] = col_two;
        doubleArray[size] = col_three;
        size++;
    }
    fclose(file);
}


for (int i = 0; i < num; i++)
{
    printf("%s \n" ,nameArray[i]);
}

但我的代码只读取第一个单词并打印18次。如何读取字符串变量并将其放入char数组?

1 个答案:

答案 0 :(得分:3)

使用

nameArray[size] = col_one;

您将{{1>}的所有元素指向同一位置。这意味着所有字符串看起来都是相同的(并且等于您读取的最后一个字符串)。

有一些不同的解决方案,但我建议的是对数据使用结构,然后为该结构使用单个数组。然后直接读入结构本身,而不使用临时变量或指针数组。

也许是这样的:

nameArray

使用上面的代码,您还可以解决另一个问题,即您阅读并丢弃文件的第一个字符。