黑马程序员技术交流社区
标题:
*******这个大多数同学应该没听过~*******
[打印本页]
作者:
guyinghua901018
时间:
2015-4-1 23:48
标题:
*******这个大多数同学应该没听过~*******
众所周知,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中。
怎么样,是不是很神奇~~~
作者:
Kman
时间:
2015-4-2 00:36
学习了。。。
作者:
PHXmilan
时间:
2015-4-2 09:44
这个真不错
作者:
chnvi
时间:
2015-4-2 09:48
谢谢分享
作者:
xiaoxiong
时间:
2015-4-2 10:02
好奇,来看看
作者:
wzboy
时间:
2015-4-2 10:30
真的是很神奇 哦
作者:
流转少年
时间:
2015-4-2 10:57
黑给力啊,版主应该奖励技术分的
作者:
guyinghua901018
时间:
2015-4-2 13:02
感谢各位支持
作者:
Dreamsky_qihang
时间:
2015-4-2 13:05
受教。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2