如何从C

时间:2016-12-12 19:04:34

标签: c

我正在阅读文本文件,文件格式为

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行文本文件并保存到数组中 提前致谢

1 个答案:

答案 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存储在适当的位置。您将能够更好地检测并从错误中恢复。