scanf格式控制字符串.doc

scanf格式控制字符串.doc

ID:57893852

大小:35.00 KB

页数:5页

时间:2020-09-02

scanf格式控制字符串.doc_第1页
scanf格式控制字符串.doc_第2页
scanf格式控制字符串.doc_第3页
scanf格式控制字符串.doc_第4页
scanf格式控制字符串.doc_第5页
资源描述:

《scanf格式控制字符串.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、scanf格式控制字符串%[][ReadingUndelimitedstrings]*Toreadstringsnotdelimitedbywhitespacecharacters,asetofcharactersinbrackets([])canbesubstitutedforthes(string)typecharacter.Thesetofcharactersinbracketsisreferredtoasacontrolstring.Thecorrespondinginputfieldisreadupto

2、thefirstcharacterthatdoesnotappearinthecontrolstring.Ifthefirstcharacterinthesetisacaret(^),theeffectisreversed:Theinputfieldisreaduptothefirstcharacterthatdoesappearintherestofthecharacterset.*Notethat%[a-z]and%[z-a]areinterpretedasequivalentto%[abcde...z].T

3、hisisacommonscanffunctionextension,butnotethattheANSIstandarddoesnotrequireit.举一些例子:    对于constchar*p="12232114687ABC12356";    sscanf(p,"%[123]",buf);//就把是'1'或'2'或'3'的字读读到buf中,直到遇到一个不是'1'且不是'2'且不是'3'的字符,于是执行后buf应该是"1223211";    %[123]等同于%[231],等同于%[321]……,列表

4、中的顺序是无所谓的;    %[123]也等同于%[1-3]或%[3-1],也就是“1至3”,对于连续的字符列表这样写就很简单,比如%[a-z]等同%[abc…省略…z];    想想看,%[3-14]应该等同于什么?是“3至14”吗?当然不是,因为[]中的是字符,而不是数字,所以%[3-14]应该等同于%[3214],等同于%[1234];    同理,想只取字母,那就可以写成%[A-Za-z];    如果列表的第一个字母是^,那么正好相反,比如%[^A-Za-z]的意思就是取字母之外的所有字符。    对于

5、字符串"abDEc123"如果想按照字母和数字读到两个字符串中就应该是"%[a-zA-Z]%[0-9]",buf1,buf2;    假如我想取一行字符,该怎么办?"%s"是不行的,因为%s遇到空白字符(空格、制表符、r、)就结束了,所以可以写成"%[^]%*c",%[^]的作用刚才讲过了,就是读之外的所有字符,也就是说读到为止,%*c的作用就是把去掉,否则再次读的时候一直遇到的都是;    所有对%s起作用的控制,都可以用于%[],比如"%*[^]%*c"就表示跳过一行,"%-

6、20[^]"就表示读取前20个字符。scanf/sscanf格式的特殊控制代码scanf中一种很少见但很有用的转换字符:[...]和[ ^...]。#includeint main() { char strings[100]; scanf("%[1234567890]",strings); printf("%s",strings);return 0; } 运行,输入:1234werew后,结果是:1234。通过运行可以发现它的作用是:如果输入的字符属于方括号内字符串中某个字符,那么就提取

7、该字符;如果一经发现不属于就结束提取。该方法会自动加上一个字符串结束符到已经提取的字符后面。 scanf("%[^1234567890]",strings); 它的作用是:如果一经发现输入的字符属于方括号内字符串中某个字符,那么就结束提取;如果不属于就提取该字符。该方法会自动加上一个字符串结束符到已经提取的字符后面。 注意:方括号两边不能空格,如:scanf("%[ 1234567890 ]",strings); scanf("%[ ^1234567890 ]",strings); 不让空格也会算在里面的。用这种

8、方法还可以解决scanf的输入中不能有空格的问题。只要用scanf("%[^]",strings); 就可以了。很神奇吧。ANSI C 标准向 scanf() 增加了一种新特性,称为扫描集(scanset)。 扫描集定义一个字符集合,可由 scanf() 读入其中允许的字符并赋给对应字符数组。 扫描集合由一对方括号中的一串字符定义,左方括号前必须缀以百分号。 例如,以

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。