gpt4 book ai didi

c - 如何读取文件的所有内容,包括有效文本之间的 NUL 字符?

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

我有一个文件需要读入缓冲区 (char *),但问题是该文件在有效文本之间有一些“有趣的字符”。

enter image description here

所以当我编写如下代码时:

  FILE *fp;
if((fp = fopen(".\\test.txt", "rt"))==NULL){
printf("Cannot open file2\n");
}

fseek(fp, 0, SEEK_END);
long int fsize = ftell(fp);
rewind(fp);
//char *buffer2 = malloc(fsize * sizeof(char));
buffer = malloc(fsize * sizeof(char));
fread(buffer, 1, fsize, fp);
buffer[fsize] = '\0';
fclose(fp);

printf("fsize = %i\n", fsize);
printf("Buffer = %s\n", buffer);

它只打印出文本文件的第一部分,如下所示:

缓冲区 = 标题

并且显然在第一个 NUL 字符处停止。

他们有什么方法可以读取文件的整个缓冲区,包括有趣的字符吗?

或者这在 C 中是不可能的吗?

FSIZE读取正确,只是FREAD没有读取整个buffer ;-(

任何帮助将不胜感激;-)

谢谢

林顿

更新:好吧,我有点傻.....如果我把缓冲区写入一个文件,它里面有所有的东西,只有当我把它写到屏幕上时,它才会在 null 处停止,所以这是很好。

最佳答案

不要以“文本”模式(“rt”)打开文件,而是使用二进制模式(“rb”)。

此外,它可能正在读取数据,但 printf("Buffer = %s\n", buffer) 只会打印到第一个 NUL,因此您的调试不会进行做你想做的事。您可能想编写一个小的十六进制转储函数。

关于c - 如何读取文件的所有内容,包括有效文本之间的 NUL 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5415186/

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