用scanf实现gets的功能
来源:互联网 发布:怎么删除mac上office 编辑:程序博客网 时间:2024/05/22 01:42
问题的提出:用scanf输入一个字符串的时候,如果输入中碰到空格,scanf就会把空格以前的字符放进后面的字符数组。那么如果现在要求并 不是以空格作为输入结束的标志,而是以最后的回车作为输入串的结束,又该如何做呢?我在一些bbs或者论坛上也看到过有人问过这个问题,一般给出的答案都 是用gets()。
事实上,scanf完全可以做到这个功能。语句是这样的:
scnaf(”%[^/n]s”,str);
现在详细说说这个功能。首先,这个功能是针对%s的,在%和s之间可以插入[],中括号里面是一个字符集,如果输入字串中的字母在这个字符集中,就会被读进来,当碰到第一个不在这个字符集中的字母,输入就会结束。比如:
scanf(”%[abc]s”,str);
输入是:abccbadef
输入是:abccba
其次,在中括号里有两个特殊字符:^和-
^表示非,即不出现在这个字符集中的字母会被接受。它必须紧接着出现在[的后面才会有这个功能,否则就会被当作一般的字符。在上面的例子里,[^/n]表示只要不碰到回车,输入的字符就会被接受。
-表示连接符,比如0-9 a-z等等,它表示了一个范围,在这个范围内的字符都会被接受或不被接受。如果要把-作为一般字符看待,-必须紧接着出现在]的前面。
另外如果要把后括号]也作为一般字符的话,它必须紧接着出现在[或者^的后面。
在msdn里面是可以找到scanf这个用法的,但不是很明显,至少要点3次链接才能到那一页,而且只是大概说了说,没有细致的讲解。在linux的man page上对于这个问题有详尽的解释,如果有兴趣的可以去看看。
补充,这是本人在前一阶段偶然看到的文章,摘抄了下来,忘了记出处了……今天整理笔记,决定贴到博客上和大家分享,如果作者看到未注明详细出处,忘见谅!
- 用scanf实现gets的功能
- 用scanf实现gets的功能
- gets 和 scanf的 区别
- gets()与scanf()的区别
- gets和scanf的区别。
- scanf、getchar、gets的比较
- scanf()、gets()、getchar()的区别
- gets与scanf的区别
- gets()与scanf()的区别
- scanf、getchar、gets的比较
- gets和scanf的区别
- scanf()与gets()的冲突
- gets与scanf的区别
- gets()和scanf的区别
- scanf和gets的区别
- scanf getchar gets 的区别
- scanf和gets的区别
- gets和scanf的区别
- delphi实现音频传输
- 守住一颗宁静的心
- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disa
- 幸福,其实是一种平衡。
- 文章列表
- 用scanf实现gets的功能
- KEEP MOVING -----------NOTHING IS IMPOSSIBLE---------------D3D studying...
- 应用NuSoap构建新型的基于PHP的Web服务
- WinMerge v 2.6.14
- http://hi.csdn.net/heiyeshuwu/profile
- Easy Code v 1.01.0008 by Ramon Sala
- 采用各向异性过滤的前后对比及心得 (附图)
- Protect your applications against advanced reverse engineering and software cracking by AntiDebugLIB By Jim Charles
- 改进粒子系统-动态编译Shader