Это зависит от того, как другие части вашего кода получают ввод от пользователя (т. Е. От stdin
).
Подход getchar()
будет работать нормально, если ваша программа ничего не читает от пользователя или не читает с использованием getchar()
.
Общее руководство, однако, должно быть последовательным в стиле ввода от каждого потока. Стиль ввода относится к символьно-ориентированным (функции, такие как getchar()
), ориентированные на линию (например, fgets()
), отформатированные (такие функции, как scanf()
), или неформатированные (например, fread()
). Каждая из этих функций выполняет разные действия в зависимости от ввода - например, getchar()
будет читать новую строку как целое значение, fgets()
оставит строку новой строки в конце строки, если буфер достаточно длинный, scanf()
часто останавливается, когда он встречается новую строку, но оставить новую строку в потоке, которая будет читаться дальше.
Сетевой эффект заключается в том, что различные стили ввода будут взаимодействовать и могут создавать странные эффекты (например, данные игнорируются, не ожидая ввода, как вы видите).
Например, если вы используете scanf()
, вероятно, вы также должны использовать scanf()
, чтобы ваша программа ждала в конце.Not getchar()
- потому что на практике может появиться новая строка, ожидающая чтения, поэтому getchar()
вернется немедленно, и ваша программа не остановится перед завершением.
Существуют исключения из вышеизложенного (например, в зависимости от того, какая строка формата используется и что вводит пользователь). Но как правило: будьте последовательны в том, как вы читаете от stdin
, и пользователю придется очень усердно работать, чтобы приостановить приостановку вашей программы до ее завершения.
Более простой альтернативой, конечно же, является запуск программы из командной строки (например, командной оболочки CMD.EXE). Затем оболочка начнет работать, когда ваша программа завершится, выход программы будет виден пользователю, поэтому ваша программа не должна останавливаться.
Thanks Namit, Я попробовал getchar, как вы сказали дважды, но выполнение не остановилось для нажатия клавиши. –
Можете ли вы разместить свой код здесь? –
Я попробовал свое предложение, как показано ниже 'int main() { node * temp1, * temp2; char script [255], ch; char * dev; FILE * fp; // логика чтения и разбора файлов // нет ввода от пользователя // только printf отображает прогресс/ошибки free (head); getchar(); getchar(); return 0; } ' так же я попробовал зсап («% С», &ch); // с пространством Это прекрасно работает, когда я запускаю его из IDE с ехом он не останавливается. –