繁体   English   中英

ftell可以用于非ASCII字符吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM