营养小代码之scanf,getchar

        如何获取控制台输入的内容呢?初级阶段,我们可以使用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时光标向后从字符处继续扫描接受数据.

代码2://输入1234567890

    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));

解释:注意光标位置不难理解,可以用于暴力调试.

    


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

定风啵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值