正常情况下,文本从另一个程序的stdout进入程序。
cat outExe | myExe
程序将stdin
设置为FILE*
指针并正确操作数据。
如果程序在没有任何stdin
(即myExe <Enter>
)的情况下执行,则会产生分段错误。
在调试器中,即使没有stdin,FILE *仍然有一个地址,所以检查NULL是不行的。
如何捕获此案例(程序在没有stdin输入的情况下运行)并正常退出?
当前代码:
FILE * filePointer = NULL;
filePointer = stdin;
char inputText[300];
if (fgets(inputText, sizeof(inputText), filePointer) != NULL ) //!= EOF
{
<work with input using strchr, strncpy, >
<looking for expected format of input>
}
在没有输入的调试器中(不确定是否是相同的测试),它会挂起fgets ...