【C】scanf、gets、getchar的基本使用

引言:

在C语言当中,处理字符串在我看来是一件特别麻烦的事情,一开始学习或者刷题的时候总是不知道怎么处理,甚至输入字符串的时候都还以为要一个个输出,结果原来%s就可以直接输出了。

scanf、gets、getchar的基本使用

  1. scanf()是在C语言中最常用的输入函数,它需要我们严格按照要求进行输入,除非你用对scanf()使用了正则表达式;对于scanf(),当它遇到空格、回车、或者Tab键时,都会自动停止输入,剩下的内容逗留在缓冲区中,所以如果需要输入字符串,不推荐使用它。

    关于正则表达式:
    [ ]是个集合的标志,%[ ]特指读入此集合所限定的那些字符,比如%[A-Z]是输入大写字母,一旦遇到不在此集合的字符便停止。
    如果集合的第一个字符是“^”,这说明读取不在”^”后面集合的字符,既遇到”^”后面集合的字符便停止(这就是scanf函数里的正则表达式应用)。
    注意:此时读取的字符串是可以含有空格的。
    例如:
    “%[^\n]”则表示当遇到回车时才结束输入。
    “%[A-Z]”则表示输入A到Z的任何字符(包括回车、空格)都会停止。
    “%[0-9a-zA-Z]”则表示只能输入数字加字母

  2. gets()主要用来接收字符串,可以接收空格,遇到’\n’时结束,但不接收’\n’,把 ‘\n’留存输入缓冲区;把接收的一串字符存储在形式参数指针指向的空间,并在最后自动添加一个’\0’
    相对于scanf(),我觉得gets()的使用更加的简单,当你需要输入那个字符串的时候,就直接gets(str)就可以了。

  3. getchar()主要用来接收单个字符,不管是空格或者回车都可以接收
    可以用作特别字符作为结束的时候进行判断。
    例如:
    (c=getchar())!=’\n’ 则表示遇到回车的时候结束接收字符。

这几个输入函数一开始使用的时候总会出现各种问题,但如果多加练习就可以直观的感受到它们之间的差别了。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main() {
    char str[20];
    char str2[20];

    /*
        scanf()大多数时候都是按照格式输入即可
        而正则表达式使用较少,所以就以它为例子尝试使用.
    */
    scanf("%[^\n]", str);
    printf("scanf():\n%s\n\n", str);

    getchar();  //将回车键吸收

    gets_s(str);
    printf("gets():\n%s\n\n", str);

    return 0;
}

结果如下:
Hello C
scanf():
Hello C

Gets
gets():
Gets

  • 11
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值