Это не сканирование символа после успешной проверки строки при программировании c.Почему я не могу сканировать символ% c?
char s[10],c;
scanf("%s",s);
scanf("%c",&c);
printf("%s\n",s);
printf("%c",c);
Это не сканирование символа после успешной проверки строки при программировании c.Почему я не могу сканировать символ% c?
char s[10],c;
scanf("%s",s);
scanf("%c",&c);
printf("%s\n",s);
printf("%c",c);
scanf
эксплуатации:
спецификатор C:
соответствует последовательности символов, длина которых определяется максимальная ширина поля (по умолчанию 1); следующий указатель должен быть указателем на char, а должно быть достаточно места для всех символов (не добавляется нулевой байт ). Обычный пробел ведущего пробела подавляется. В сначала пропустите пробел, используйте явное пространство в формате.
Таким образом, измените формат на " %c"
.
Это
char s[10],c;
scanf("%s",s);
scanf("%c",&c);
printf("%s\n",s);
printf("%c",c);
не будет работать, как задумано, потому что, когда вы используете scanf("%s",s);
вы ввести строку с клавиатуры нажмите клавишу ВВОД. То, что scanf("%s",s);
сохранит строку в s
из буфера, но даст enter
или точнее \n
в буфере. Следующий scanf("%c",&c);
будет читать, что \n
, потому что это 1 символ длиной и сохранит его в c
. Но когда вы его печатаете, вы ничего не увидите, потому что это просто новая строка. Чтобы предотвратить все это изменение, второй scanf("%c",&c);
с scanf(" %c",&c);
, оставляя место для \n
.
Надеюсь, это поможет вам понять, что происходит.
«Но когда вы его печатаете, вы ничего не увидите, потому что это просто новая строка» - OP ничего не увидит, OP увидит новую строку. – zoska
После ввода символов для строки 'вы вводите ввод' \ n 'следующее сканирование для символа захватывает новую строку и печатает ее. что вы можете сделать, захватите эту новую строку '\ n'. Поместите scanf ("% c", & c); еще раз это сработает.
char s[10],c;
`scanf("%s",s);`
`scanf("%c",&c);`
`scanf("%c",&c)`
`printf("%s\n",s);`
`printf("%c",c);`
Что происходит? Что вы ожидаете? Что ты видишь вместо этого? Какой ответ вы ожидаете? – glglgl
Этот вопрос задается ежедневно, и, учитывая количество проблем, которые он дает новичкам, его следует воспринимать всерьез. По крайней мере, предоставить и ответить или провести двойное голосование. – 2501
Возможно, компилятору не понравилось то, что вы написали. Вот почему он не сканировал. – barnes