这一行
Assert(pos == ftell(file));
用于我的代码,当文件包含非ASCII字符时,此行失败。
我该怎么办?
为清楚起见,这里更新了整个功能:
int getTerminatedString(char * dest, int length)
{
char * rv = fgets(dest,length,file);
int len = -1;
if(rv)
{
len = strlen(rv);
pos += len;
assert(pos == ftell(file));
}
return len;
}
谢谢!
答案 0 :(得分:2)
如果您以二进制模式打开文件,例如无论内容如何,fopen("yourfile","rb")
,ftell
都会在文件中提供偏移量。
答案 1 :(得分:0)
dest
缓冲区是否足够大以包含所有字符和最终终止零字节?
如果dest
指针指向的缓冲区指针太小,程序可能会在内存中覆盖它不应该的东西 - 这是获取SIGABRT的一种可能方式。