【发布时间】:2017-04-10 04:52:29
【问题描述】:
我正在尝试调试我使用 Eclipse 用 C++ 编写的程序。 该程序包括从用户那里获取输入,但是当我将输入输入到控制台时,它永远不会继续运行代码(它会一直要求输入)。 如果不修复此问题,我将无法调试,希望能得到一些帮助。 谢谢。
代码卡在 while 循环 fgets 上:
int main(int argc, const char**argv) {
FILE* inputFile = NULL;
setlocale(LC_ALL, "");
if(argc == 2){
inputFile = fopen(argv[1], "r");
if (inputFile == NULL){
printf("Problem opening file %s, make sure correct path name is given.\n", argv[1]);
return 0;
}
}
else {
inputFile = stdin;
}
char buffer[MAX_STRING_INPUT_SIZE];
// Reading commands
while ( fgets(buffer, MAX_STRING_INPUT_SIZE, inputFile) != NULL ) {
fflush(stdout);
if ( parser(buffer) == error ){
printf("ERROR\n");
break;
}
};
fclose(inputFile);
return 0;
}
【问题讨论】:
-
可以在这里附上相关代码吗?
-
在 Eclipse 之外将程序作为独立可执行文件运行时是否遇到同样的问题?
-
听起来像是一个无限循环。
-
不是。当我在终端中运行它时,它可以工作。