文字列がchar* str
であるとします。 私は次のようにバッファにそれを印刷:freopenを使用するのは合法ですか?
char buf[MAX_LEN];
freopen("tmp","w",stdout);
printf("%s\n",str);
fflush(stdout);
fp = fopen(tmp,"r");
if (fp == NULL) return;
fgets(buf,MAX_LEN,fp);
fclose(fp);
fclose(stdout);
このコードの原因無効なストリームバッファを扱うことはできますか? freopen
以降はfopen
の後に使用できますか? 私のシステムの制約に基づいて、fprintf
とsprintf
は使用できません。
はまた、そこにある(あるいは少なくともだった)あなたが書き込み用にオープンされたファイルを持っている場合、それは自動的に読み取りのために「ロック」のシステム。その場合、一般的には 'fopen'の読み込みの試みから' NULL'を返します。これは...迷惑です。私はこれらのシステムを避けようとしています。 :-) – torek
@Coren - ヘッダについては明らかです。私のコードを複製する必要はありませんでした – Yakov