Вот определение функции get_line, которые: -Как получить левый символ в потоке?
пропустить пробелы в начале.
остановка вначале пробел.
- остановить символ первой строки и поместить его в массив.
- оставить символ, если у него нет свободного места.
int get_line (char* ch, int n)
{
if (n <= 0)
return 0;
char c;
while (isspace(c = getchar()));
int i = 0;
do {
ch[i++] = c;
if (i == n)
break;
}while (! isspace(c = getchar()));
if (c == '\n')
ch[i++] = '\n';
ch[i] = '\0';
return i;
}
int main()
{
char array[5];
get_line(array, 4);
printf("%s", array);
char c;
while ((c = getchar()) != '\n'){
printf("\n%c", c);
}
return 0;
}
Но когда я ввести больше символов, то размер и попытаться напечатать оставшийся символ в основном, используя последний в то время цикла, он печатает странные символы, а не печать оставшихся символов в потоке, как требуемый четвертой спецификацией функции. Пожалуйста, скажите мне, почему это происходит?
FYI, вы можете проверить [оператор приоритет] (http://en.cppreference.com/w/c/language/operator_precedence) из '(с = getchar()! = '\ n'') '. Просто говорю... – WhozCraig
@WhozCraig ya it done – YakRangi
@WhozCraig можно объяснить немного – YakRangi