Я написал следующую функцию (пока я читал книгу Ritchie на C), чтобы получить одну строку из командной строки. Он делает то, что он должен делать, и я понимаю, как это работает, но я хотел копать немного глубже.getchar() и кнопка ввода, понимающая, как это работает
int getLine(char arr[], int max) {
int c, i;
for (i = 0; i < max - 1 && (c = getchar())!= EOF && c!= '\n'; ++i) {
arr[i] = c;
}
if(c == '\n') {
arr[i] = c;
}
arr[i+1] = '\0';
return i; /*length without '\n'*/
}
мой вопрос о петле, скажем, у нас есть пустая командная строка, и она ждет пользователя вводить что-то, потому что первый GetChar() вызывается в цикле, давайте скажем, что пользователь ввел следующее:
h
Моего предположение о том, что происходит потом, что GetChar() магазины, «з» в обрах [] без пользователь на самом деле нажимая клавишу вВОДА.
так что если пользователь держит набрав:
hello
«ч» «е» 'л «л» и «о» будет храниться в обрах [] без пользователь фактически нажав ввод и GetChar будет были вызваны в общей сложности 6 раз, последний из них был после «o». И затем, когда пользователь нажимает enter, getchar() будет хранить '\ n' в arr [], правильно? Это точно, как это работает? Так что я думаю, вопрос
. Getchar() необходимо ввести, чтобы сделать то, что он делает?
благодаря
Научитесь использовать отладчик и переходите через код по строкам, наблюдая за всеми задействованными переменными. –
спасибо, я попробую, – Gravity