0

这条线

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;
}

谢谢!

4

2 回答 2

2

如果您以二进制模式打开文件,例如fopen("yourfile","rb")ftell无论内容如何,​​都会给出文件中的偏移量。

于 2013-01-14T21:37:08.043 回答
0

缓冲区是否dest足够大以包含所有字符以及最终的终止零字节?

如果指针的缓冲区指针dest太小,程序可能会在内存中覆盖它不应该覆盖的东西——这是获取 SIGABRT 的一种可能方式。

于 2013-01-14T22:25:51.953 回答