如何获取控制台输入的内容呢?初级阶段,我们可以使用scanf和getchar()函数来处理,对于这两个函数的原理,可以暂时的理解为对缓冲区的扫描,扫描的话就有光标位置,使用这个概念有助于理解程序的结果.接下来用小代码来测试熟悉一下.
代码1://输入的字符串为abc de fgh(之间可以间隔任意多个个英文符号下的空格)
char str[80];
char str1[80];
char str2[80];
scanf("%s",str)
printf("str=%s",str);
scanf("%s",str1);
scanf("%s",str2)
printf("\n str1=%s",str1);
printf("\n str2=%s",str2);
abc ge fgh
str=abc
str1=ge
str2=fgh
解释:scanf会自动跳过空格并且结束扫描,此时光标停住,当再次使用scanf时光标向后从字符处继续扫描接受数据.char ch=getchar();
printf("%c\n",ch);
while(getchar()!='\n'){
char a=getchar();
char b=getchar();
printf("a=%c,b=%c\n",a,b);
结果:
1234567890
1
a=3,b=4
a=6,b=7
a=9,b=0
解释:,每出现一次getchar(),就会从缓存,也就是用户输入的内容中取一个字符,光标向后一位,第一次ch取得的是
1,第二次取出来的是2,被用于while条件判断,第三次3给a,第四次4给b,第五次用于条件判断,...注意,getchar不会跳过空格,有兴趣在其中插入空格测试,使用光标知识解释.
代码3://scanf扫描完整句子,中间随意空格(例如sdsd fasd fasd )
char string[50];
scanf("%[^\n]",string);
printf("%s\n",string);
解释:正则表达式[^\n]遇到换行符之外的符号一律扫描,遇到停止;要想继续,添加scanf或者改正则表达式
代码4://scanf返回值为扫描输入的变量个数(23,45,23 3或者23 33,2或者aefaf fasf)
int a,b
printf("%d",scanf("%d,%d",&a,&b));
解释:注意光标位置不难理解,可以用于暴力调试.