为scanf()耗费的半天

           看例子:

{char a[256];

int b;char c;

scanf("%s",a);

scanf("%d%c",&b,&c);

}

这样写了之后,每次输入一个字符串和一个整数后,就结束了,坑爹,经过多方考证

知道了涉及到这个函数的理解问题,,,当你输入到屏幕中的时候,他是一个系统的标准输入文件流,你输入的东西都在这个流文件里面,这个时候,scanf()做的事情就是对应的读取过程了,

但是%c很特殊,他总是被忽略,导致很多时候没读入或者是非法操作,提供自己验证的两种方法:

1、scanf("%s",a);

scanf("%d\n%c",&b,&c);          //加入\n能够防止%c读入空格的字符

2、scanf("%s",a);

getchar();        //在此处加入getchar(),能够将上一个遗留的空格取得,再将后面的%c和%d交换,这样问题

scanf("%c%d",&c,&b);        //就避免了

 

所以在此为自己强行规定下,读取的时候,最好能够在scanf()之后用上getchar()。。而且对于需要多个对象一起读入的时候,一定要留意%c       (高手勿喷)

posted on 2012-04-28 19:40  轻歌曼舞  阅读(147)  评论(0编辑  收藏  举报