Теперь рассмотрим, как можно ввести строку символов с клавиатуры.
Возникает естественное желание воспользоваться стандартной функцией scanf(). Попробуем.
Листинг 14.6
#include <stdio.h>
int main(){
char str[17];
scanf("%s", str);
printf("%s\n",str);
return(0);
}
Выполним эту программу. Введем, уже привычное нам, Hello world.
Результат работы программы на следующем рисунке.
|
| Рис.5 Ввод строки с использованием функции scanf().
|
Как видите, в строку сохранилось лишь первое слово. Все дело в реализации функции scanf. Она считает пробел разделителем. Получается, таким способом мы можем считать лишь строку, которая не содержит пробелов, т.е. мы можем считать одно слово.
Кстати, вы обратили внимание, что я не поставил перед именем массива знак &, чтобы получить его адрес? Это не ошибка. Просто имя массива, без указания номера элемента в квадратных скобках, ссылается на адрес первого элемента массива. Т.е. нам тут не нужно получать адрес, он и так у нас есть. Это касается не только символьных массивов, а любых. Но пока это не особо важно. С этим мы столкнемся, когда будем изучать указатели.
Вернемся к нашим баранам, как говорится. Мы хотели считать строку. Раз scanf() надежд возложенных на неё не оправдала, должна быть какая-то другая функция. И она, конечно же, есть.