Я читаю книгу K & R, и я немного застрял.Пользовательская функция ввода линии ввода
Что не так в следующем?
void getInput(int* output) {
int c, i;
for(i=0; (c = getchar()) != '\n'; i++)
output[i] = c; // printf("%c", c) prints the c value as expected
output[++i] = '\0';
}
При запуске программы она никогда не выходит из цикла, и я должен Ctrl + C для выхода. Однако, если я заменю пятую строку на printf("%c", c);
, она полностью выведет все входные данные после нажатия ввода и создания новой строки.
Кажется работать для меня. – pc1oad1etter 2008-10-22 05:40:19
Вы нажимаете клавишу ввода? И, покажите нам весь код, вы не можете правильно обращаться к getInput. И, выход должен быть символом char *. – paxdiablo 2008-10-22 05:49:37
++ в output [++ i] означает, что вы пропускаете одну запись в своем массиве - обычно это массив символов, а не массив int, как указал Pax Diablo. Другие люди отметили, что вы не проверяете EOF и что вы не проверяете переполнение буфера. Теперь вы должны начать изучать хорошие привычки. – 2008-10-22 05:58:38