【发布时间】:2017-10-19 11:19:11
【问题描述】:
我有一个包含字符串、整数和双精度的文本文件。像这样:
亚瑟 10 14.5
朱莉娅 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 数组中?
【问题讨论】:
-
尝试检查
fscanf的返回值 -
while ((c = getc(file)) != EOF) { fscanf(file, "%s %d %lf", &col_one, &col_two, &col_three); nameArray[size] = col_one;-- >while (fscanf(file, "%14s %d %lf", col_one, &col_two, &col_three)==3 && size < num){ nameArray[size] = strdup(col_one); -
还有
i < num;-->i < size; -
缺少:
if (size >= num) break;