scanf() 总结

目录

scanf()

%c的字符输入格式

问题

解决方法(任选其一)

%d的字符输入格式

%s的字符输入格式


scanf()

scanf是从标准输入缓冲区读取输入的数据。

scanf格式输入时要求输入格式与格式控制符中的完全一样,比如:

scanf("abcd%c",&ch);输入时必须输入abcde,ch得到的值为e;

scanf("%d%d",&x,&y);时,输入必须为10 20(注:10和20之间要用空格,回车或TAB键之中的任选一种隔开);

       scanf("%d,%d",&x,&y);时,输入必须为10,20;

       scanf("%d+%d",&x,&y);时,输入必须为10+20;

%c的字符输入格式

scanf是从标准输入缓冲区读取输入的数据,%c的字符输入格式接收回车字符

问题

#include<stdio.h>
int main(void){
    char a[100];
    char k;
    int loc;
    printf("请输入字符串:");
    scanf("%s",a);
    printf("n请输入要插入的字符:");
    scanf(" %c",&k);
    printf("n请输入要插入的位置:");
    scanf("%d",&loc);
    return 0;
}

在输入第一个scanf时,输入字符后按回车结束,输入缓冲中保存了这个回车符,遇到第二个scanf时,它自动把这个回车符赋给了k。而如果第二个scanf的输入格式不是%c时,由于格式不匹配,这个回车符会被自动忽略,所以只有在连续输入两个字符格式时才会出现这样的问题

解决方法(任选其一)

1. 清空输入缓冲区

在第一个scanf后加入语句:fflush(stdin); //C语言清空输入缓冲区函数。

2. 格式控制中加入空格

将第二个scanf改为:scanf(" %c",&ch2);//在%号前面加一个空格。scanf格式输入时要求输入格式与格式控制符中的完全一样(如:scanf("abcd%c",&ch);输入时必须输入abcde,ch得到的值为e)空格可以抵消前面输入的回车符。

%d的字符输入格式

 

%s的字符输入格式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章