Почему 2nd scanf не работает в моей программе?
scanf ("%d %c",&size,&chara); работает, но отдельный scanf для ввода символов не работает. Я показываю это внутри кода. Почему так?
void squareCustomFill(int size, char chara);
int main(void) {
int size,i,k;
char chara;
printf("Enter size of square: "); //This works
scanf("%d %c",&size,&chara);
//printf("Enter fill character: "); BUT WHY DOES NOT THIS WORK??
//scanf("%c",&chara);
squareCustomFill(size,chara);
return 0;
}
void squareCustomFill(int size, char chara){
int i,k;
for (k=1;k<=size;k++){
for(i=1;i<=size;i++)
printf("%c",chara);
printf("n");
}
}
3 ответов
Scanf не потреблял \n
символ, который оставался в буфере с первого вызова scanf.
так сделал второй вызов scanf.
вы должны очистить stdin перед чтением снова или просто избавиться от новой строки.
второй вызов должен быть
scanf(" %c",&chara);
^ this space this will read whitespace charaters( what newline also is) until it finds a single char
Да, я считаю, что Армин прав. scanf будет читать в пробелах (пробел, новая строка и т. д.). При вводе значений, если щелкнуть пробел или ввести сразу после первого scanf, второй scanf будет считывать это значение (пробел, новая строка и т. д.).). Так что для scanf("%Д %С",&размер&Чара) потому что есть пробел между %D и %с. Если вы хотите их отделить просто делать то, что Армин предложил: функции scanf(" %с",&Чара).