当遇到坑题时,读入字符称为了一件难事,看着程序写的有道理,可就是读不进去,读的字符有问题,感觉电脑傻掉了,当进行了无数次的debug之后,终于解决了答案,
面对这样的窘境,不如我们谈一谈读入字符的方法与经验吧!
对于读入字符,我们用getchar()或者scanf("%c", &a),当对于字符串,我们用scanf("%s", s),其中s是字符串,注意当读入单个字符时,&必须要加上,但是读入字符串时,&不
要加,所以写代码时候要注意这一点,如果读取的内容比较麻烦,例如“dafasdf dfasfewurpoiu ffe”这种带有空格或者换行的东西时,我们可以用getchar()与scanf("%c", &a)
解决,所以getchar()与scanf()读入单个字符时一定要注意空格,换行等东西,scanf("%s", s)读入时,遇到空格、Tab、换行时候停止。
给大家举一个坑人的例子吧!
#include <stdio.h> int main() { int a, b, c; char d; scanf("%d%d%d", &a, &b, &c); scanf("%c", &d); printf("%c", d); return 0; }
样例输入:
1 2 3 4 5
样例输出是什么呢?
是不是 5 呢 ?
那你就错了,我往往会犯这样的问题,对字符的读入不加以精确的思考,然后盲目调试了半天,无果。。。
#include <stdio.h> int main() { int a, b, c; char d; scanf("%d%d%d", &a, &b, &c); scanf("%c", &d); printf("%c", d); if(d == ' ') printf("..."); return 0; }
所以我们需要时刻记住printf与getchar()读入是多么的精细,这是我们时刻需要注意的问题。