Хорошо, я уверен, что здесь кое-что отсутствует, но я понятия не имею, что это такое, и я надеюсь, что кто-то может помочь мне разобраться.Чтение ввода из fgetc() и печать с помощью printf()
Я читаю входные данные из командной строки и записываю функцию, которая использует fgetc() для этого. Однако, по-видимому, поверхностное изменение функции заставляет ее вести себя совершенно по-другому.
Это основной() функция:
while(1)
{
char* cmd = malloc(sizeof(char) * 80);
printf("Enter command: ");
read_flush(cmd, 80);
printf("%s\n", cmd);
free(cmd);
}
И это одна из версий read_flush():
int read_flush(char* buffer, int count)
{
int i, c;
for(i = 0; i < count; i++)
{
c = fgetc(stdin);
if(c == '\n' || c == EOF)
return i;
buffer[i] = (char)c;
}
return i;
}
Это один работает отлично. Вы вводите ввод, и он выплевывает его обратно. Однако эта следующая версия заставляет main просто печатать «Enter command:» снова и снова, не предоставляя пользователю возможность ввода ввода.
int read_flush(char* buffer, int count)
{
int i, c;
while(i < count)
{
c = fgetc(stdin);
if(c == '\n' || c == EOF)
return i;
buffer[i] = (char)c;
i++;
}
return i;
}
Какая утонченность с fgetc() я здесь отсутствует?
Ничего себе, кричит. Да, это было все, что было. – user1227489
Хорошо иметь привычку всегда инициализировать свои переменные, особенно при работе с указателями. Это спасет вас от многих головных болей по дороге. –