我正在尝试使用扫描文件fscanf并将字符串放入大小为20的char数组中,如下所示:
char buf[20];
fscanf(fp, "%s", buf);
Run Code Online (Sandbox Code Playgroud)
该文件fp目前包含:1 + 23.
我正在设置指向第一个元素的指针,buf如下所示:
char *p;
p = buf;
Run Code Online (Sandbox Code Playgroud)
印刷buf,printf("%s", buf)仅产量1.试图增加p并打印出垃圾(p++; printf("%c", *p)).
我在fscanf这里做错了什么?为什么不从文件中读取整个字符串?
fscanf(和相关的函数)格式字符串 " %s "会尝试读取尽可能多的字符,而不包括空格,在这种情况下,它会找到第一个字符(1)并存储它,然后它会命中一个空格() and therefore stop searching.
If you'd like to read the whole line at once consider using fgets,因为您需要将目标缓冲区的大小指定为其中一个参数,因此使用起来也更安全.
fgets将尝试读取最大缓冲区长度减1个字符(最后一个字节保存为尾随空字节),它将停止读取多个字符,命中换行符或文件末尾.
fgets (buf, 20, fp);
Run Code Online (Sandbox Code Playgroud)
文档链接
| 归档时间: |
|
| 查看次数: |
242 次 |
| 最近记录: |