简体   繁体   中英

C program compiles but does not execute

I installed NetBeans for C successfully, but I don't know what is wrong because whenever I write any code it says "build successful" but it does not execute. Nothing happens when I hit the run button, Netbeans just compiles the code but nothing is displayed on screen.

The Following is the simple code:

int main(void) {
    int a=0;
    printf("input any number");
    scanf("%d",&a);
    return (EXIT_SUCCESS);
}

And here is its compilation:

""/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)
""

What should i do? Thanks in advance

The stdout stream is line-buffered. That means whatever you fwrite or printf , etc. to stdout will not actually be written to your terminal until a newline character ( \\n ) is encountered.

So your program has your string buffered, and is blocked on the scanf , waiting for your input from stdin . As soon as this happens, your console window is closing, and you never see the print.

To remedy this, either add a newline character at the end of your string:

printf("input any number:\n");        // Newline at end of string

or manually cause stdout to be flushed:

printf("input any number: ");
fflush(stdout);                       // Force stdout to be flushed to the console

Furthermore, I'm assuming that the (total time: 34s) figure includes the time the program was waiting for you to type something. You were incredibly patient, and after ~34 seconds, finally mashed something on the keyboard, after which the program ended and the console window closed.

Or, if Netbeans isn't opening a separate console window, this is all happening in one of those MDI panes of the Netbeans IDE.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM