0

いくつかのバイトでオフセットされているファイル内の文字を取得するためのCプログラムを作成しようとしています。たとえば、次のように3つとします。

fseek(fp,3,SEEK_CUR);

その特定のバイトが表す文字を印刷したいと思います。たとえば、ファイルに次のようなものが含まれている場合、3文字ごとに印刷する必要があります。

//reading from file//

問題は、whileループを使用した後、目的の結果を印刷できないことです。印刷される最初の文字は、3番目ではなく4番目の文字です。

while(fp!=EOF)
{
    fseek(fp,3,SEEK_CUR);
    ch = fgetc (fp);
    printf("%c",ch);
}

これの間違いを理解するのを手伝ってくれませんか。ありがとう!

4

2 に答える 2

2

fgetcファイルを1つオフセットして移動します。次のことを試してください。

fseek(fp,3,SEEK_CUR);
while(fp!=EOF)
{
    ch = fgetc (fp); // moves offset by 1
    fseek(fp,2,SEEK_CUR); // moves offset by another 2
    printf("%c",ch);
}
于 2012-04-26T16:03:12.193 に答える
0

fgetc also advances the file pointer by one character. So each iteration of your loop is advancing the file pointer by a total of 4 characters. For your purposes, it sounds like you just want to change the 3 to a 2: fseek(fp,2,SEEK_CUR);

于 2012-04-26T16:04:01.583 に答える