gpt4 book ai didi

c - fscanf 不扫描文件

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

我正在尝试使用 fscanf 扫描文件并将字符串放入大小为 20 的字符数组中,如下所示:

char buf[20];
fscanf(fp, "%s", buf);

文件 fp 当前包含:1 + 23

我正在设置指向 buf 中第一个元素的指针,如下所示:

char *p;
p = buf;

打印 bufprintf("%s", buf) 仅产生 1。尝试增加 p 并打印出垃圾信息(p++; printf("%c", *p))。

我在这里用 fscanf 做错了什么?为什么它不从文件中读取整个字符串?

最佳答案

fscanf(和相关函数)与 format-string "%s"将尝试读取尽可能多的字符包括一个空格,在这种情况下它会找到第一个字符 (1) 并存储它,然后它会遇到一个空格 () 并因此停止搜索。


如果您想一次读取整行,请考虑使用 fgets,使用它也更安全,因为您需要将目标缓冲区的大小指定为其参数之一。

fgets 将尝试读取最大 length-of-buffer minus 1 个字符(最后一个字节保存为尾随 空字节 ),它将在读取那么多字符、击中换行符或文件末尾时停止。

fgets (buf, 20, fp);

文档链接

关于c - fscanf 不扫描文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11492746/

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