文字列があるとしますchar* str
。次の方法でバッファに出力します。
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
。