前几天很多人说期末考试C语言快要挂了,大佬救救我。
其实感觉自己也快要挂了,自己也是渣渣。
其实很多C语言的小细节自己都还没有搞清楚,在这里简单写一写吧。
(迷之微笑)
数据台输入
讲三个输入吧 scanf & getchar 还有一个字符串输入gets
1.scanf()函数
1.1输入缓存区
#include<stdio.h>
int main()
{
char ch1, ch2;
scanf("%c", &ch1);
scanf("%c", &ch2);
printf("%d %d\n", ch1, ch2);
return 0;
}
这么一个简单的小函数
对吧?
我们输入两个字母a b,来获取他们相应的ASCII码
一般会这么输入:
press 'a'
press 'Enter'
press 'b'
press 'Enter'
然而。。。。。
我们会发现输入的结果是
65 10
这好像与我们开始想的一点都不一样呢
WTF???
原因就在于有个叫做输入缓存区(buffer)的东西
当你输入了一串数据流之后按了‘Enter’之后
你输入的东西就会都保存在那个缓存区
然后你的scanf再去缓存区一个个读
SO
你的缓存区是这样的:
a enter b enter
你的scanf("%c", &ch1); 接收了a
然后你的scanf("%c", &ch2);就读了一个。。。回车
所以这也是你为什么输出10这个神秘数字的原因