我有一个包含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数组?
答案 0 :(得分:3)
使用
nameArray[size] = col_one;
您将{{1>}的所有元素指向同一位置。这意味着所有字符串看起来都是相同的(并且等于您读取的最后一个字符串)。
有一些不同的解决方案,但我建议的是对数据使用结构,然后为该结构使用单个数组。然后直接读入结构本身,而不使用临时变量或指针数组。
也许是这样的:
nameArray
使用上面的代码,您还可以解决另一个问题,即您阅读并丢弃文件的第一个字符。