我用gcc编译了下面的代码
int main() {
int a = 0;
fprintf( stdin, "%d", 123 );
fscanf( stdin, "%d", &a );
printf( "%d\n", a );
return 0;
}
在我的期望中,程序应该直接执行(即,程序永远不会暂停并等待用户输入).但它仍然停止,等待我的输入.
我想知道当我尝试向stdin写入内容时会发生什么以及如何修改此代码并且它可以直接执行?
解决方法:
stdin仅用于输入,stdout用于输出. (4566976的答案显示了当您尝试输出到stdin时会发生什么)请参阅例如glibc documentation on standard streams
(简而言之,写入stdin毫无意义)