2013-01-14 60 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的一種可能方式。