scanf的注意

来源:互联网 发布:mac 最小化窗口快捷键 编辑:程序博客网 时间:2024/05/21 11:33

scanf函数,与printf函数一样,都被定义在stdio.h里,它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其关键字最末一个字母f即为“格式”(format)之意。

关于scanf的注意:

scanf("%d _ %d",&a,&b) 

scanf("%d%d",&a,&b)  _表示空格,在输入时,要按照格式输入 ,在两种格式一样,输入的时候要加空格,不如3_4;

scanf("%d,%d",&a,&b)再输入时要加‘,’,比如3,4

键盘缓冲区残余信息问题

#include

int main()

{

    int a;

char c;   

do{

        scanf("%d",&a);

        scanf("%c",&c);

        printf("a=%d     c=%c\n",a,c);

        /*printf("c=%d\n",c);*/

    }while(c!='N');

 

        scanf("%c",&c);这句不能正常接收字符,什么原因呢?我们用printf("c=%d\n",c);Cint表示出来,启用printf("c=%d\n",c);这一句,看看scanf()函数赋给C到底是什么,结果是 c=10 ,ASCII值为10是什么?换行即\n.对了,我们每击打一下"Enter"键,向键盘缓冲区发去一个“回车”(\r),一个“换行"(\n),在这里\rscanf()函数处理掉了(姑且这么认为吧^_^),而\nscanf()函数“错误”地赋给了c.

实际例程

1) "%d%d%d"是按十进值格式输入三个数值。

输入时,在两个数据之间可以用一个或多个空格、tab键、回车键分隔。一定要跟在数字后面

2) 在用"%c"输入时,空格和“转义字符”均作为有效字符。

3) scanf()函数不能正确接受有空格的字符串?

: I love you!

#include

int main()

{

    char str[80];

    scanf("%s",str);

    printf("%s",str);  

    return 0;

}

 

输入:I love you!

输出:I

 

scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。

  遇空格、“回车”、“跳格”键。

  遇宽度结束。

  遇非法输入。

    所以,上述程序并不能达到预期目的,scanf()扫描到"I"后面的空格就认为对str的赋值结束,并忽略后面的"love you!".



 

0 0
原创粉丝点击