Спецификатор преобразования %s
вызывает scanf
, чтобы остановиться при первом символе пробега. Если вам нужно, чтобы иметь возможность читать пробельные символы, вам нужно будет либо использовать спецификатор %[
преобразования, такие как
scanf("%[^\n]", bookname);
, который будет читать все до следующего символа новой строки и сохранить его в bookname
, хотя бы safe вы должны указать максимальную длину имени книги в спецификаторе преобразования; например если BookName имеет место для 30 символов, считая нулевой терминатор, вы должны написать
scanf("%29[^\n]", bookname);
В противном случае, вы могли бы использовать fgets()
:
fgets(bookname, sizeof bookname, stdin);
Я предпочитаю fgets()
решение, лично.
Что такое `bookname`? – khachik 2010-12-05 10:42:56