gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:18:51 24 4
gpt4 key购买 nike

问题已用我的代码更新。

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

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 如何将整数和 float 存储到 var A 和 B 中。

感谢您的关注。

最佳答案

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

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

此外,fgets 在用完输入时将返回 null。因此,您不再需要使用解析失败来终止读取。

关于c - 使用C语言将文件中的每个换行符存储为两个零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39830926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com