[英]Can ftell use for non-ASCII characters?
这条线
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;
}
谢谢!
如果您以二进制模式打开文件,例如fopen("yourfile","rb")
,则ftell
将给出文件中的偏移量,而与内容无关。
dest
缓冲区是否大到足以容纳所有字符以及最后一个终止的零字节?
如果dest
指针的缓冲区指针太小,则程序可能会在内存中覆盖它不应覆盖的内容-这是获取SIGABRT的一种可能方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.