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 を取得する 1 つの可能な方法です。

于 2013-01-14T22:25:51.953 に答える