gpt4 book ai didi

C++ 文件中的最后一个字符

转载 作者:搜寻专家 更新时间:2023-10-31 01:14:25 25 4
gpt4 key购买 nike

我想使用以下代码获取文件中的最后一个字符

 FILE * f = fopen ( f_text, "r" );
if (f )
{
if (fseek( f, -1, SEEK_END ) != 0 ) fclose (f);
char last[1];
fgets(last, 1, f );
...

但最后只有“”存储在变量中。错误在哪里?

unicode文件有问题吗?感谢您的帮助。

最佳答案

问题是 fgets 会形成一个字符串。由于您只给它一个字节来处理,它只能返回一个空字符串,因为它需要那个字节来存储 '\0'

正如 James Kanze 向我指出的那样,如果您以二进制模式打开文件,则只能按照您希望的方式使用 fseek。由于文件现在处于二进制模式,因此使用 fgets 是不合适的。因此,您应该改用 fread

FILE *f = fopen(f_text, "rb");
if (f == 0) throw 0;
try {
if (fseek(f, -1, SEEK_END) != 0) throw 0;
char last[1];
if (fread(last, 1, 1, f) != 1) throw 0;
//...
}
catch (...) {
fclose(f);
throw;
}
fclose(f);

关于C++ 文件中的最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11349328/

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