gpt4 book ai didi

c - 从文件中读取字符串时获取垃圾值

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:35 25 4
gpt4 key购买 nike

我试图从我的 C 程序中的文本文件中读取一些数据,但得到的是垃圾值。

下面是文件中的输入格式

3442
Tack Hammer
9
3.550000
ABC317

这是我读取这个文件数据的代码

char name[100];
int product_code;

fscanf(fin, "%d", &x[i].product_code); //taking id from file is fine
printf("\n%d\n",x[i].product_code); // works correctly

fscanf(fin,"%[^\n]",name);
printf("Data from file:\n%s",name); // it displays junk values

这是输出预览

enter image description here有人可以纠正我吗?谢谢

最佳答案

让我们看一下代码。

char name[100];

创建一个 100 字节长的 char 数组。它未初始化并且包含“垃圾”。

fscanf(fin, "%d", &x[i].product_code);

fin 扫描 3442

printf("\n%d\n",x[i].product_code);

打印一个换行符,上面的fscanf扫描的数字,和一个换行符。线路

fscanf(fin,"%[^\n]",name);

是导致问题的原因。下一个要读取的字符是换行符 \n。如果下一个字符是 \n%[^\n] 将失败。因此,fscanf 失败并返回零。

printf("Data from file:\n%s",name);

打印来自文件的数据,一个换行符和name 包含的“垃圾”。


如何解决这个问题?

在第一个 fscanf 之后使用 getc(fin); 读取并丢弃 \n 字符。

关于c - 从文件中读取字符串时获取垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29677089/

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