失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 字符串输入的2种常用方法详解

字符串输入的2种常用方法详解

时间:2019-05-08 09:46:03

相关推荐

字符串输入的2种常用方法详解

字符串输入的2种常用方法详解

一.scanf函数1.扫描集2.逆向使用扫描集 二.gets函数

一.scanf函数

int main(){char arr[50] = {0 };scanf("%s", arr);printf("%s", arr);return 0;}

这种方法可以输入字符串,但是只能输入一个词,遇到空格就结束了。,空格之后的字符,会留在缓冲区,等待下次读入。

如果我们要使用scanf函数来输入的话,有没有办法呢?

答案:有的。

1.扫描集

除了转换修饰符 s 以外,也可以使用“扫描集”(scanset)修饰符来读取字符串它由方括号所包含的一串无序字符组成([scanset])。scanf()函数接着读取所有字符,然后将它们存储为一个字符串(带有字符串终止符),直到遇到不匹配扫描集中任一字符时才停止。

int main(){char arr[50] = {0 };scanf("%[123456789]", arr);printf("%s", arr);return 0;}

此时我们会发现一个问题,就是扫描集只能识别扫描集里面的字符。

不过没关系,我们只需要改动一点点就行,这样不行的话,我们就反着来。

2.逆向使用扫描集

逆向使用转换扫描集(也就是说,除扫描集中的字符外,其他都符合),做法是在扫描集的左括号后面加上一个插入号(^)。

int main(){char arr[50] = {0 };// \n是按下回车后输入的,[^\n] 的意思是 除了\n之外的字符scanf("%[^\n]", arr); //字符串末尾有\0printf("%s", arr);return 0;}

使用scanf时,最后的\n(按下回车时输入的)会遗留在缓冲区中,如果使用scanf,则需要使用gerchar()将缓冲区的Enter吃掉

二.gets函数

char arr[50] = {0 };gets(arr); //末尾有\0puts(arr);

使用 gets() 时,系统会将最后“敲”(Enter)的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符

总结:

1 .我个人认为使用gets()函数比较方便,同时缓冲区中还不会遗留数据。

2.如果要使用scanf()函数,那么使用逆行扫描集会好很多,同时也需要注意缓冲区中的\n

如果觉得《字符串输入的2种常用方法详解》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。