使用C语言将文件中的每个换行符存储为两个零

Storing every newline into two zero from a file using C language

问题用我的代码更新了。

我有一个格式如下的文件。每行包含一个整数和一个浮点数。

12 2.0
11 1.1

3 3.0

我想把每一行的第一个数据存入变量A,第二个数据存入变量B。

一开始我是用fscanf做的如下

while (1) {
    int exit;

    exit = fscanf(fp, "%d%f", &A, &B);
    if (exit < 2) break;
}

如果我打印 A 和 B 的结果,它将是

12 2.0
11 1.1
3 3.0

但实际上我想将换行符存储为2个零,例如:

12 2.0
11 1.1
0 0
3 3.0

一些网站建议使用fgets/fgetc来阅读换行符。但我无法理解 fgets/fgetc 如何将整数和浮点数存储到 var A 和 B 中。

感谢您的关注。

对于每一行,使用足够大的缓冲区调用 fgets() 以容纳您合理预期的任何行。代替 fscanf,对字符串调用 sscanf,参数完全相同。所以程序现在应该以相同的方式工作,除了它将 IO 从解析中分离出来。

现在你让解析变得更复杂了。如果该行是空白(只是空白),则这两个值为零,如果不是空白,则调用 sscanf 并尝试像以前一样进行解析。如果两者都失败,则说明您的输入格式错误,因此报告错误。

另外,当 fgets 用完输入时,它会 return null。因此,您不再需要使用解析失败来终止读取。