2013-01-14 45 views
0

此行是否可以用于非ASCII字符?

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

你应该使用“libicu”。 – 2013-01-14 21:34:48

+2

你是什么意思的非ASCII字符? C不知道ASCII。 – ouah

+2

C++还是C?他们不一样,你会得到不同的答案。 –

回答

2

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

0

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

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