2016-07-23 6 views
-2

Я установил компилятор GCC для написания кода C, но когда я перехожу к каталогу и использую команду gcc -o helloworld helloworld.c, он делает исполняемый файл на моем рабочем столе, как обычно, но когда я его запускаю, исполняемый файл закрывается немедленноC исполняемый файл немедленно возвращается

Я не думаю, что код является проблемой, но это возможность.

#include <stdio.h> 

int main() 
{ 
    printf("Hello world\n"); 
    return 0; 
} 
+1

Какая ошибка ??? – OldProgrammer

+0

Нет ошибки, я использую команду gcc -o в командной строке, и когда я запускаю исполняемый файл, он падает, как только я его открываю. –

+0

Что означает «сбой»? ???? – OldProgrammer

ответ

3

Вы пропустили эту строку getchar() в своем коде.

#include <stdio.h> 

int main() 
{ 
    printf("Hello world\n"); 
    getchar(); 
    return 0; 
} 

Примечание: Хотя, это не исправить, как @Keith Томпсон explains в другой ответ. Вместо этого вы можете заставить программу выйти из нее, пока она не ждет нажатия клавиши перед выходом из окна консоли.


Другой способ (без использования getchar())

Открыть Командная строка (cmd.exe) и перейдите в папку программы и запустить программу оттуда. Вы обнаружите, что окно больше не исчезает, а остается открытым.

+1

Это сработало , Благодарю. –

+3

Использование '' здесь не нужно ... код будет более переносимым без него. ** Редактировать: ** Намного лучше сейчас;) – iRove

+1

@iRove благодарит за уведомление, удалил его :) –

5

Проблема в том, что Windows имеет плохую поддержку для запуска программ, отличных от GUI.

Обычный способ запуска программы под Windows состоит в том, чтобы дважды щелкнуть исполняемый файл из окна проводника. Для такой программы, как ваша, которая просто печатает на стандартный вывод, это откроет новое окно для выхода программы, программа запустится и быстро закончится, и Windows немедленно закроет окно, возможно, прежде чем вы сможете его увидеть.

Общим решением является добавление чего-то в конец вашей программы, например вызов getchar(), чтобы программа ожидала ввода.

Другим решением является запуск программы из командной строки. Его вывод будет отображаться в текущем окне, а не во временном, и вы увидите вывод программы, а затем новое приглашение. Если вы запустили его таким образом и добавили getchar(), это не обязательно, и он заставит программу ждать ввода перед завершением.

ОС Windows выделяет программы графического интерфейса, а не программы, которые используют ввод и вывод обычного текста. C был разработан в другой среде (хотя, конечно, реализации C для Windows поддерживают графические операции).

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