そのため、これをさまざまな方法で割り当て作業に取り込もうとしましたが、毎回異なるエラーが発生します。基本的に、私たちが持っているのは、パイプされるファイルの内容をバイト単位で読み取る必要があるプログラムです (ファイルの長さが巨大になる可能性があるため、単に malloc を呼び出して大量のスペースを割り当てることはできません)。ファイルの最後に到達するまで、realloc を使用して、解放されたメモリの量を拡張する必要があります。最終結果は、各バイトを含む 1 つの長い C 文字列 (配列) になるはずです (ファイルの一部である場合は、null バイトも無視できません)。私が現時点で持っているものは次のとおりです。
char *buff;
int n = 0;
char c;
int count;
if (ferror (stdin))
{
fprintf(stderr, "error reading file\n");
exit (1);
}
else
{
do {
buff = (char*) realloc (buff, n+1);
c = fgetc (stdin);
buff[n] = c;
if (c != EOF)
n++;
}
while (c != EOF);
}
printf("characters entered: ");
for (count = 0; count < n; count++)
printf("%s ", buff[count]);
free (buff);
ファイルの最後まで読み取りを続け、毎回メモリを拡張する必要がありますが、単純なテキスト ファイルをパイプして実行しようとすると、セグメンテーション違反があることがわかります。何が間違っているのかよくわかりません。
malloc などの使用が許可されていることに注意してください。ただし、必要なメモリ量がわかっているため、それを機能させる方法がわかりませんでした。