我正在阅读文本文件,文件格式为
value1: 5
value2: 4
value3: 3
value4: 2
value5: 1
然后重复。 我知道如何从一行中获取我需要的数据,但我已经到处搜索并浏览了各种书籍和资源,我无法找到从每10行而不是一行读取的方法。
这是我到目前为止所知道的,它有一些错误,我有额外的变量,它是不完整的,但我能够编译,它所做的只是打印文件中的第一个值。我的printf主要是测试我从文件中读取的内容。
#include <stdio.h>
#include <math.h>
int main()
{
int line = 0;
int time = 0;
int switch0 = 0;
int switch1 = 0;
int switch2 = 0;
int switch3 = 0;
int pot = 0;
int temp = 0;
int light = 0;
FILE *infile = fopen("data.txt", "r");
FILE *outfile = fopen("matlab.csv", "w");
if (infile == NULL)
{
printf("Error Reading File\n");
exit(0);
}
fprintf(outfile, "Time,Switch0,Switch1,Switch2,Switch3,Potentiometer,Temperature,Light");
fscanf(infile, "time: %d\nswitch0: %d\nswitch1: %d\nswitch2: %d\nswitch3: %d\npotentiometer: %d\n temperature: %d\n light: %d\n",
&time, &switch0, &switch1, &switch2, &switch3, &pot, &temp, &light) != EOF;
printf("%d\n %d\n %d\n %d\n %d\n %d\n %d\n %d\n", time, switch0, switch1, switch2, switch3, pot, temp, light);
}
tl; dr如何读取每10行文本文件并保存到数组中 提前致谢
答案 0 :(得分:2)
我知道如何从一行获取我需要的数据
那是一个好的开始。如果你能读一行,你可以读一行 n 次,对吗?
我到处搜索并查看各种书籍和资源,我无法找到一条从每10行而不是一行读取的方法。
它更像是一样的。例如,您可以编写一个只读取一行并返回数据的函数。然后调用该函数必要的次数。
如果您确实想立即读取 n 行的所有数据,可以这样做。而不是你的代码:
fscanf(infile, "time: %d\n", &time[100]);
你可以使格式字符串更广泛:
fscanf(infile, "time: %d\nswitch1: %d\nswitch2: %d\npotentiometer: %d\n",
&time, &switch1, &switch2, &potentiometer);
\n
只是fscanf()
的另一个角色 - 你不必在一行的末尾停止阅读。
但要小心这种方法。如果您有一个格式错误的文件,它会让您遇到问题 - 如果您预期的某条线丢失或其中一个标签拼写错误,一切都会中断。我认为你最好一次读一行,并阅读标签和价值,如:
fscanf(infile, "%s %d\n", &label, &value);
然后,您可以查看label
中的字符串,找出您正在处理的行,然后将value
存储在适当的位置。您将能够更好地检测并从错误中恢复。