黑马程序员技术交流社区
标题:
scanf函数大多数同学都不知道的小知识
[打印本页]
作者:
sd6628611
时间:
2015-11-13 23:16
标题:
scanf函数大多数同学都不知道的小知识
众所周知,scanf函数如果我们要接收一个字符串,在我们习惯的写法下:
char a[100];
scanf("%s",a);
如果我们输入Hello World,a接收到的值,只有Hello而已。因为,这种情况下,空格,tab,回车,都会成为这个字符串的结束标志。
但是我们可以用另外的一种写法来解决这种问题。
程序如下:
char a[100];
scanf("%[^\n]",a);
用到这个的人不多,但是%[]这个写法真的可以让scanf函数以自己定义的字符来作为结束符。比如%[^a]这样来接收字符串,那么就算是空格,tab和回车都会被接收到字符串当中,直到出现a并且按下回车为止。所以如果你的输入如下:
123 123120098900
123345 1123 a123877 1723749
那么你接收到的字符串只能有
123 123120098900
123345 1123
^\n,在这里的意思是除了回车之外的意思。(\n是回车的意思,大家都知道,但是^是“除了”的意思我还真不知道,只知道有个意思是按位异或,网上查也没查到,就只能记住了。)所以这一句的意思是,接收除了回车之外的字符,所以空格和tap不再是结束的标志,自然就能接收带有空格和tab的句子了,直到你敲回车,这个句子才会停止并且读入到a中。
怎么样,是不是很神奇~~~
作者:
huihui1030
时间:
2015-11-14 00:17
真不知道scanf还有这么多东西。。。学到了
作者:
韦德460
时间:
2015-11-15 09:29
回来我实践一下,确实不知道还有这样的用法
作者:
liuchuan_alex
时间:
2015-11-15 09:38
学习了
作者:
android_921
时间:
2015-11-15 10:03
之前都没注意到这个问题,感谢楼主
作者:
沐小妖mavs
时间:
2015-11-15 10:43
学习了 ,第一次知道还可以这么用
作者:
1170191405
时间:
2015-11-15 13:23
学习了!
作者:
海风眷恋的沙
时间:
2015-11-15 20:51
谢谢了 楼主.
作者:
love阿木蛋花
时间:
2015-11-15 21:12
刷日常 谢谢
作者:
小贼船
时间:
2015-11-16 00:51
很全面的总结
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2