【发布时间】:2015-04-19 20:19:52
【问题描述】:
我正在尝试读取一个包含 10 行的文件,如下所示:
000000 52.3 65.2 98.7 96.3 100.0 25.0 95.6 98.7 82.5 63.1
111111 81.0 68.6 54.2 96.3 74.2 78.6 98.5 62.1 64.7 75.0
222222 52.6 63.5 25.4 42.6 32.0 22.1 52.3 96.6 98.5 63.2
333333 98.2 65.3 65.4 93.5 32.6 37.5 63.5 91.0 96.3 82.5
444444 96.3 85.2 74.1 36.9 25.8 14.7 12.3 13.4 63.5 98.4
555555 93.6 82.5 74.1 63.1 65.2 63.5 98.7 63.2 63.8 64.0
666666 95.2 61.5 97.8 52.3 63.3 33.3 44.4 55.5 66.6 77.7
777777 11.1 22.2 33.3 44.4 55.5 66.6 77.7 88.8 99.9 100.0
888888 12.3 23.4 34.5 45.6 56.7 67.8 78.9 89.1 91.1 98.1
999999 98.7 87.6 76.5 65.4 54.3 43.2 32.1 21.0 52.9 87.1
我需要将文件逐行读入一个字符串,所以目前我有:
#include<stdio.h>
int main()
{
FILE *p;
char *line[10], *buffer; //Array of strings and a buffer string
int a;
p = fopen("assign6.dat", "r+");
for(a = 0; a < 10; a++) {
fscanf(p, "%[^\n]", buffer); //Read until we reach a newline
fgetc(p); //Read the newline
line[a] = buffer;
printf("%s\n", line[a]);
}
for(a = 0; a < 10; a++) {
printf("%s\n", line[a]);
}
fclose(p);
return 0;
}
所以我声明了一个指向 char 的指针数组来存储所有 10 行数据。第一个 printf 语句打印出正确的数据。但是,第二个 for 循环中的第二个 printf 语句一遍又一遍地打印出文件的最后一行(10 次)。那么为什么这些 printf 语句在它们是相同的东西时打印我们不同的东西。
【问题讨论】: