gpt4 book ai didi

c - 从文件 (.txt) 中读取并保存到 char* C

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

我有一个 file.txt,它包含例如“这是一个 txt 文件”(这个内容可以是可变的),我需要一个函数来读取 file.txt 并将其内容保存到一个 char* 中。

file.txt 包含 -> “这是一个 .txt 文件”

我需要一个包含“这是一个 .txt 文件”的 char *readedContent。

首先,我将 char *str 的内容(str 包含“这是一个 .txt 文件”)保存到一个“file.txt”中,然后我尝试从该文件中获取字符串,但该字符串有更多字符而不是“这是一个 .txt 文件”。 (经常添加空格或@,?)

我的职能是:

char *special_char_remplace(char *str){


FILE *f1;
f1 = fopen("file.txt","w+");
fprintf(f1,"%s", str);
fclose(f1);

size_t len, bytesRead;
char *readedContent;
FILE* f2;

f2 = fopen("file.txt", "rb");

fseek(f2, 0, SEEK_END);
len = ftell(f2);
rewind(f2);

readedContent = (char*) malloc(sizeof(char) * len + 1);
readedContent[len] = '\0'; // Is needed only for printing to stdout with printf

bytesRead = fread(readedContent, sizeof(char), len, f2);

printf("STRING: %s\n", readedContent);

fclose(f2);

return readedContent;
}

我遇到的问题是在 char *readedContent 中我有比 file.txt 的内容更多的字符。

非常感谢。

最佳答案

The problem that I have is that in the char *readedContent I have more chars than the file.txt's content.

您获得的字节数多于文件中字符数的最可能原因是 encoding您的文件:fread() 逐字节读取文件,因此如果文件的编码对某些代码点使用多个字节,您的缓冲区将包含一个或多个字符的多个字节。

要验证这个理论并解决问题,请编写一个短程序,使用 fwrite() 将您想要的消息 “这是一个 .txt 文件” 的字节写入文本文件中。应用程序接口(interface)。以这种方式编写的文件应使用 fread() 正确读取。

关于c - 从文件 (.txt) 中读取并保存到 char* C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16446036/

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