程序在 NetBeans 运行 时无法输入数据
No way to input data when the program is running in NetBeans
我正在尝试使用 MinGW 编译器在 NetBeans 8.0.2 中执行 K. N. King "C Programming, A Modern Approach, 2 Edition" 书中的程序。该程序如下所示:
#include <stdio.h>
int main(void) {
int height, length, width, volume, weight;
printf("Enter height of box: ");
scanf("%d", &height);
printf("Enter length of box: ");
scanf("%d", &length);
printf("Enter width of box: ");
scanf("%d", &width);
volume = height * length * width;
weight = (volume + 165) / 166;
printf("Volume (cubic inches): %d\n", volume);
printf("Dimensional weight (pounds): %d\n", weight);
return 0;
}
所以,我按 "Run Project",程序构建成功,没有任何错误,然后它开始 运行,什么也没有发生,没有控制台或类似的东西出现输入高度、长度等数据等
在输出 window 中,程序构建后,它开始 运行 并且 window 中除了粗光标外什么也没有显示。当我按下 window 中的任何按钮时,程序结束并显示以下内容:
Enter height of box: Enter length of box: Enter width of box: Volume (cubic inches): 0 Dimensional weight (pounds): 0
RUN SUCCESSFUL (total time: 6s)
我对 C 完全陌生,所以我不知道程序 运行s 时应该出现什么。当启动用 Python 编写的程序时,出现了控制台,现在我很困惑。
当我尝试调试时,它再次成功构建,然后控制台出现以下行:"Enter height of box: "
,所以它像我认为的那样工作,但我不认为这是正确的运行 个程序的方式。
stdio
流被缓冲。如果您希望在程序阻塞等待输入之前显示输出,则需要在使用 stdin 之前先 fflush()
stdout。或者,您可以使用 '\n'
结束所有输出行,因为换行符会隐式刷新输出。
编辑:如果您输入 scanf()
无法使用 %d
匹配的数据,例如字母字符,scanf()
将失败。您可以通过将 scanf()
的 return 值与您预期的匹配数(在本例中为一个)进行比较来检查此失败。就目前而言,您不检查这个,字符保留在输入缓冲区中,下一个 scanf()
将再次尝试匹配它们但失败。
我正在尝试使用 MinGW 编译器在 NetBeans 8.0.2 中执行 K. N. King "C Programming, A Modern Approach, 2 Edition" 书中的程序。该程序如下所示:
#include <stdio.h>
int main(void) {
int height, length, width, volume, weight;
printf("Enter height of box: ");
scanf("%d", &height);
printf("Enter length of box: ");
scanf("%d", &length);
printf("Enter width of box: ");
scanf("%d", &width);
volume = height * length * width;
weight = (volume + 165) / 166;
printf("Volume (cubic inches): %d\n", volume);
printf("Dimensional weight (pounds): %d\n", weight);
return 0;
}
所以,我按 "Run Project",程序构建成功,没有任何错误,然后它开始 运行,什么也没有发生,没有控制台或类似的东西出现输入高度、长度等数据等
在输出 window 中,程序构建后,它开始 运行 并且 window 中除了粗光标外什么也没有显示。当我按下 window 中的任何按钮时,程序结束并显示以下内容:
Enter height of box: Enter length of box: Enter width of box: Volume (cubic inches): 0 Dimensional weight (pounds): 0
RUN SUCCESSFUL (total time: 6s)
我对 C 完全陌生,所以我不知道程序 运行s 时应该出现什么。当启动用 Python 编写的程序时,出现了控制台,现在我很困惑。
当我尝试调试时,它再次成功构建,然后控制台出现以下行:"Enter height of box: "
,所以它像我认为的那样工作,但我不认为这是正确的运行 个程序的方式。
stdio
流被缓冲。如果您希望在程序阻塞等待输入之前显示输出,则需要在使用 stdin 之前先 fflush()
stdout。或者,您可以使用 '\n'
结束所有输出行,因为换行符会隐式刷新输出。
编辑:如果您输入 scanf()
无法使用 %d
匹配的数据,例如字母字符,scanf()
将失败。您可以通过将 scanf()
的 return 值与您预期的匹配数(在本例中为一个)进行比较来检查此失败。就目前而言,您不检查这个,字符保留在输入缓冲区中,下一个 scanf()
将再次尝试匹配它们但失败。