考虑以下代码:
freopen("buffer.txt", "w+", stdin);
fprintf(stdin, "hello");
fseek(stdin, 0, SEEK_SET);
char str[16];
scanf("%s", str);
printf("%s", str);
我发现标准中没有任何条目限制我这样做,但也没有明确允许它的条目。我是否应该期望此代码适用于任何符合标准的编译器?如果stdin
(或stdout
)以读写模式打开,任何标准 i/o 函数会中断或导致 UB 吗?C++ 流呢?