为什么第二个scanf函数并不在我的计划工作?(Why 2nd scanf doesn't

2019-08-22 20:10发布

的scanf( “%d%C”,&大小,&恰拉); 工作原理,但对字符输入单独的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");

 }
}

Answer 1:

SCANF没有消耗\n为缓冲呆从第一scanf函数调用字符。

因此,第二个scanf函数调用一样。

你有一次,或只是读摆脱换行符之前清除标准输入。

第二个电话应该是

scanf(" %c",&chara);
       ^ this space this will read whitespace charaters( what newline also is) until it finds a single char


Answer 2:

是的,我相信阿明是正确的。 scanf函数将在空格(空格,换行等)的读取。 如果你点击空格键或进入第一scanf函数之后当你输入值,第二个scanf函数将在值(空格,换行等)的读取。 所以,你的固定与scanf函数(“%d%C”,及尺寸,及甜心),因为%d和%C之间的空间。 如果你希望他们分开只是做阿明建议:scanf函数(“%C”,与恰拉)。



Answer 3:

它们之间抛出的getchar()和啜了那多余的新行。



文章来源: Why 2nd scanf doesn't work in my program?
标签: c scanf