欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

scanf 输入带空格的字符串的一个小trick

程序员文章站 2022-04-15 12:36:51
...

       C/C++中用scanf 和 cin输入字符串时如果遇到空格会被截断,然而很多时候输入的字符串都是需要带有空格的,这就给我们带来了困惑,有的小伙伴可能会用gets或getline等解决,今天给习惯用scanf的小伙伴提供一个小trick。

       scanf 输入字符串时,默认回车和空格是输入的间隔或结束符号,所以输入带空格,tab或者回车的字符串是不可以的,但我们可以利用格式符 “%[]” 。它的作用是扫描字符集合,例如:

char str[1000];
scanf("%[^a]", str);

其中 “a” 是一个具体的字符常量(包括控制字符)。当输入字符串时,字符 “a” 将被当作当前输入的结束符。利用此格式符就可以由编程者自己指定一个输入结束符。

如果想输入一串带空格的字符串,可以将上述的字符 “a”改成“ \n”,即代表着输入一行字符串,遇到换行符时结束。

char str[1000];
scanf("%[^\n]",str);
int len = strlen(str);
for(int i = 0; i < len; i++)
    printf("%c\n",str[i]);

scanf 输入带空格的字符串的一个小trick

相关标签: knowledge point