我成功地安装了NetBeans for C,但我不知道哪里出了问题,因为每当我编写任何代码时,它都会说“build successful”,但它不会执行。
当我点击run按钮时什么也没有发生,Netbeans只是编译代码,但屏幕上什么也没有显示。
下面是简单的代码:
int main(void) {
int a=0;
printf("input any number");
scanf("%d",&a);
return (EXIT_SUCCESS);
}
以下是它的汇编:
""/C/MinGW/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make.exe[1]: Entering directory `/c/Users/timekeeper/Documents/NetBeansProjects/ft'
"/C/MinGW/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/ft.exe
make.exe[2]: Entering directory `/c/Users/timekeeper/Documents/NetBeansProjects/ft'
mkdir -p build/Debug/MinGW-Windows
rm -f "build/Debug/MinGW-Windows/main.o.d"
gcc -std=c99 -c -g -MMD -MP -MF "build/Debug/MinGW-Windows/main.o.d" -o build/Debug/MinGW-Windows/main.o main.c
mkdir -p dist/Debug/MinGW-Windows
gcc -std=c99 -o dist/Debug/MinGW-Windows/ft build/Debug/MinGW-Windows/main.o
make.exe[2]: Leaving directory `/c/Users/timekeeper/Documents/NetBeansProjects/ft'
make.exe[1]: Leaving directory `/c/Users/timekeeper/Documents/NetBeansProjects/ft'
BUILD SUCCESSFUL (total time: 34s)
""
我该怎么办?
提前谢谢
最佳答案
stdout
流是行缓冲的。这意味着,在遇到换行符(fwrite
)之前,您printf
或stdout
等到\n
的内容实际上不会写入您的终端。
因此,您的程序将字符串缓冲,并在scanf
上被阻止,等待stdin
的输入。一旦发生这种情况,您的控制台窗口将关闭,您永远不会看到打印。
要解决此问题,请在字符串末尾添加换行符:
printf("input any number:\n"); // Newline at end of string
或手动导致
stdout
被刷新:printf("input any number: ");
fflush(stdout); // Force stdout to be flushed to the console
此外,我假设
(total time: 34s)
图包括程序等待您键入内容的时间。你非常有耐心,在大约34秒后,终于在键盘上捣碎了一些东西,然后程序结束,控制台窗口关闭。或者,如果Netbeans没有打开单独的控制台窗口,那么这一切都发生在Netbeans IDE的其中一个MDI窗格中。
关于c - C程序编译但不执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26900167/