Мы снова не будем углубляться в развернутый синтаксис, кому интересно, тот может подробно посмотреть в любом справочнике.
Функция gets принимает в качестве своего аргумента массив символов, в который она и записывает считываемую из стандартного потока ввода строку. Концом ввода строки является символ перенос строки ‘\n’, т.е. когда мы нажмем Enter на клавиатуре. Этот символ последним считывается и при записи в массив заменяется символом конца строки ’\0’.
Следующая программа читает введенную строку и выводит её на экран.
Листинг 14.7
#include <stdio.h>
int main(){
char str[17];
gets(str);
printf("%s\n",str);
return(0);
}
Результат работы программы, на следующем рисунке.
|
| Рис. 6. Ввод строки с использованием функции gets()
|
Как видите, мы избавились от нашей проблемы. Но есть более важная проблема. Когда мы предоставляем пользователю вводить строку, мы не знаем, сколько он символов введет. Может так случиться, что мы объявили массив на 10 элементов, а пользователь ввел 30. Тогда возникнет ошибка – переполнение буфера. Поэтому использовать эту функцию использовать нужно очень осторожно, либо не использовать вообще. А что же тогда использовать?