1
假设我有一个字符串char* str
。 我把它打印到缓冲器下列方式:使用freopen和fopen之后合法吗?
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
。
此外,虽然@Yakov不太可能碰上这一点,有(或至少是)系统对写开放,它会自动“锁定”阅读。在这种情况下,您通常会从试图读取'fopen'的时候返回NULL。这是...烦人。我尽量避免这些系统。 :-) – torek 2012-04-08 21:37:11
@Coren - 这是显而易见的头。没有必要重复我的代码 – Yakov 2012-04-09 04:31:30