次のスニペットを考えると、fin
ランダムなテキストが含まれており、data
常に a が続きますcommand
。
#define COMMANDSIZE 16
#define DATASIZE 128
int i, j, k, ch;
char command[COMMANDSIZE];
char data[DATASIZE];
FILE* fin;
FILE* fout;
fin = fopen("input.txt", "r");
fout = fopen("output.txt", "w");
fseek(fout, 0, SEEK_SET);
while ((ch = fgetc(fin)) != EOF)
{
for (i = 0; i < sizeof(command); i++) //obtain command from input stream
{
command[i] = fgetc(fin) & 0xff;
}
for (j = 0; j < sizeof(data); j++) //obtain data from input stream
{
data[j] = fgetc(fin) & 0xff;
}
for (k = 0; k < sizeof(data); k++) //write data to output stream
{
fseek(fout, /* computed block address */, SEEK_CUR);
fputc(data[k], fout);
}
}
fclose(fout);
fclose(fin);
入力ファイルと出力ファイルを比較すると、入力ファイルの一部のデータが引き継がれませんでした。したがって、上記をwhile(1)
で実行してみましたが、入力ファイルの一部のデータが引き継がれませんでしたが、 を使用した場合と同じデータでwhile((ch = fgetc(fin)) != EOF)
はなく、異なる出力ファイル間に交差 (重複) がありませんでした。
入力ファイルのすべてのデータが出力ファイルに確実に書き込まれるようにするにはどうすればよいですか? これはfgetc()
and/or と関係がありfputc()
ますか?