2014-09-20 2 views
1

Я только что установил Eclipse и MinGW на компьютере моей сестры под управлением Windows 7.
Пока я тестировал, правильно ли установлено все Я заметил, что это не будет ничего печатать:Eclipse (или, может быть, окна виноваты?) Не будет печатать, если я не fflush (stdout)

#include<stdio.h> 

int main() { 
    int x; 

    printf("Hello World!\n"); 
    printf("Enter a number... \n"); 
    scanf("%d", &x); 
    printf("You entered %d", x); 
    return 0; 
} 

вместо этого, он просто ожидает ввода и печати все это сразу.
Вот как это выглядит:

345 
Hello World! 
Enter a number... 
You entered 345 

Только после того, как я добавил вызов fflush(stdout) после printf("Enter a number... \n");, что Eclipse, напечатанной его в правильном порядке, смысл, этот код:

#include<stdio.h> 

int main() { 
    int x; 

    printf("Hello World!\n"); 
    printf("Enter a number... \n"); 
    fflush(stdout); 
    scanf("%d", &x); 
    printf("You entered %d", x); 
    return 0; 
} 

работает точно так же, как ожидается.
Стоит отметить, что я открыл отдельный проект C++ и попробовал то же самое:

#include<iostream> 

int main() { 
    int x; 
    std::cout<<"Hello!\n"; 
    std::cout<<"Enter a number\n"; 
    std::cin>>x; 
    std::cout<<"you entered "<<x; 
} 

Это работало прекрасно, и печатает без необходимости промывки ничего ...
Почему задержать выход Eclipse, в проектах C?

+0

Что произойдет, если вы добавите несколько вызовов 'fflush (stdout)'? – wallyk

+0

Вы уверены, что буфер ввода пуст до того, как вы отсканируете? Попробуйте изменить формат на ''% d ''(обратите внимание на пробел) –

+0

@wallyk, я отредактировал главный пост. –

ответ

1

Не сдавайтесь :) Я надеюсь, что этот подобный вопрос поможет вам:

C/C++ printf() before scanf() issue

также, я думаю, это не IDE конкретно! Cheers

+0

Привет, Shaktidhar Dandapani, спасибо за ваш комментарий. Я знаком с этими обходными решениями, я надеялся найти способ устранить источник проблемы, поэтому программа будет работать в своем «естественном», ожидаемом способом. –

Смежные вопросы