gpt4 book ai didi

C 从文件中读取,它读取 "@"

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

我正在尝试读取 C 中的文件。但是当我读取并将其写入标准输出时,它还会打印 @ ,而我的文件中没有。是什么原因?

    #include <stdio.h>

int main() {

FILE *fp;
int br;
char buffer[10];
int i;
fp = fopen("a.txt","r");
while(1) {
br = fread(buffer,1,10,fp);
printf("%s",buffer);
if (br==0)
break;
}
}

输出:

1234567891@2345678912@345678912@345678912@

文件:123456789123456789123456789

最佳答案

您的 fread 调用最多可正确读取 10 个字节,但带有 %sprintf 要求字符串以 null 结尾。您可以通过将缓冲区的大小增加到 11 个字节来修复它,并在每次调用 fread 后在数据末尾写入零,即 buffer[br] = 0; .

另一种方法是通过调用 printf("%.*s", br, buffer); 告诉 printf 您的数据大小是多少。那时您不需要修改缓冲区数组。

关于C 从文件中读取,它读取 "@",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10742354/

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