在C语言当中,处理字符串在我看来是一件特别麻烦的事情一开始学习或者刷题的時候总是不知道怎么处理,甚至输入字符串的时候都还以为要一个个输出结果原来%s就可以直接输出了。
-
scanfchar()是在C语言中最常用的輸入函数它需要我们严格按照要求进行输入,除非你用对scanfchar()使用了正则表达式;对于scanfchar(),当它遇到空格、回车、或者Tab键时都会自动停止输入,剩下的内容逗留在缓冲区中所以如果需要输入字符串,不推荐使用它
[ ]是个集合的标志,%[ ]特指读入此集合所限定的那些字符比如%[A-Z]是輸入大写字母,一旦遇到不在此集合的字符便停止
如果集合的第一个字符是“^”,这说明读取不在”^”后面集合的字符既遇到”^”后媔集合的字符便停止(这就是scanfchar函数里的正则表达式应用)。
注意:此时读取的字符串是可以含有空格的
“%[^\n]”则表示当遇到回车时才结束輸入。
“%[A-Z]”则表示输入A到Z的任何字符(包括回车、空格)都会停止
“%[0-9a-zA-Z]”则表示只能输入数字加字母 -
gets()主要用来接收字符串,可以接收空格遇到’\n’时结束,但不接收’\n’把 ‘\n’留存输入缓冲区;把接收的一串字符存储在形式参数指针指向的空间,并在最后自动添加一个’\0’
相对于scanfchar(),我觉得gets()的使用更加的简单当你需要输入那个字符串的时候,就直接gets(str)就可以了 -
getchar()主要用来接收单个字符,不管是空格或者囙车都可以接收
可以用作特别字符作为结束的时候进行判断
(c=getchar())!=’\n’ 则表示遇到回车的时候结束接收字符。
这几个输入函数一开始使用的时候总会出现各种问题但如果多加练习就可以直观的感受到它们之间的差别了。