C语言中scanf用法运用和意义.doc_第1页
C语言中scanf用法运用和意义.doc_第2页
C语言中scanf用法运用和意义.doc_第3页
C语言中scanf用法运用和意义.doc_第4页
C语言中scanf用法运用和意义.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言中sccanf用法、运用和意义vavsscanf用法以及正则表达式的运用 表头文件 #include(stdio.h)定义函数 int sscanf (const char *str,const char * format,.);函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。周星星的代码:#include int main() const char* s = iios/12DDWDFF122; char buf20; sscanf( s, %*/%, buf ); printf( %sn, buf ); return 0;结果为:12DDWDFFsscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。函数原型: int scanf( const char *format ,argument. ); 其中的format可以是一个或多个 %* width h | l | I64 | Ltype | | t | n | 非%符号, 注:a|b|c表示a,b,c中选一,d,表示可以有d也可以没有d。 width:宽度,一般可以忽略,用法如: const char sourceStr = hello, world; char buf10 = 0; sscanf(sourceStr, %5s, buf); /%5s,只取5个字符 cout buf endl; 结果为:hello h | l | I64 | L:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size。 type :这就很多了,就是%s,%d之类。 特别的: %*width h | l | I64 | Ltype 表示满足该条件的被过滤掉,不会向目标参数中写入值。如: const char sourceStr = hello, world; char buf10 = 0; sscanf(sourceStr, %*s%s, buf); /%*s表示第一个匹配到的%s被过滤掉,即hello被过滤了 cout buf endl; 结果为:world 支持集合操作: %a-z 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配) %aB 匹配a、B、中一员,贪婪性 %a 匹配非a的任意字符,贪婪性 1. 常见用法。以下是引用片段:charstr512=0;sscanf(123456,%s,str);printf(str=%s,str);2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。以下是引用片段:sscanf(123456,%4s,str);printf(str=%s,str);3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。以下是引用片段:sscanf(123456abcdedf,%,str);printf(str=%s,str);4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。以下是引用片段:sscanf(123456abcdedfBCDEF,%1-9a-z,str);printf(str=%s,str);5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。以下是引用片段:sscanf(123456abcdedfBCDEF,%A-Z,str);printf(str=%s,str); 搜集一些特殊用法: % 的用法:% 表示要读入一个字符集合, 如果 后面第一个字符是”,则表示反意思。 内的字符串可以是1或更多字符组成。空字符集(%)是违反规定的,可 导致不可预知的结果。%也是违反规定的。 %a-z 读取在 a-z 之间的字符串,如果不在此之前则停止,如 char s=hello, my friend” ; / 注意: ,逗号在不 a-z之间 sscanf( s, “%a-z”, string ) ; / string=hello%a-z 读取不在 a-z 之间的字符串,如果碰到a-z之间的字符则停止,如 char s=HELLOkitty” ; / 注意: ,逗号在不 a-z之间 sscanf( s, “%a-z”, string ) ; / string=HELLO%*= 前面带 * 号表示不保存变量。跳过符合条件的字符串。 char s=notepad=001 ; char szfilename 32 = ; int i = sscanf( s, %*=, szfilename ) ; / szfilename=NULL,因为没保存int i = sscanf( s, %*=%s, szfilename ) ; / szfilename=001%40c 读取40个字符%= 读取字符串直到碰到=号,后面可以带更多字符,如: char s=notepad=001 ; char szfilename 32 = ; int i = sscanf( s, %=, szfilename ) ; / szfilename=notepad 如果参数格式是:%=: ,那么也可以从 notepad:001读取notepad参考:/beingstudio/articles/1806661.aspx/lbird/blog/item/07e09c8282dbe992f703a6b0.html/yinjianren/blog/item/28dce5ca75e30585c9176896.html sscanf/scanf特殊用法2007-08-03 13:55% 的用法:% 表示要读入一个字符集合, 如果 后面第一个字符是”,则表示反意思。 内的字符串可以是1或更多字符组成。空字符集(%)是违反规定的,可 导致不可预知的结果。%也是违反规定的。 %a-z 读取在 a-z 之间的字符串,如果不在此之前则停止,如 char s=hello, my friend” ; / 注意: ,逗号在不 a-z之间 sscanf( s, “%a-z”, string ) ; / string=hello%a-z 读取不在 a-z 之间的字符串,如果碰到a-z之间的字符则停止,如 char s=HELLOkitty” ; / 注意: ,逗号在不 a-z之间 sscanf( s, “%a-z”, string ) ; / string=HELLO%*= 前面带 * 号表示不保存变量。跳过符合条件的字符串。 char s=notepad=001 ; char szfilename 32 = ; int i = sscanf( s, %*=, szfilename ) ; / szfilename=NULL,因为没保存int i = sscanf( s, %*=%s, szfilename ) ; / szfilename=001%40c 读取40个字符 The run-timelibrary does not automatically append a null terminatorto the string, nor does reading 40 charactersautomatically terminate the scanf() function. Because thelibrary uses buffered input, you must press the ENTER keyto terminate the string scan. If you press the ENTER before the scanf() reads 40 characters, it is displayed normally, and the library continues to prompt for additional input until it reads 40 characters%= 读取字符串直到碰到=号,后面可以带更多字符,如: char s=notepad=001 ; char szfilename 32 = ; int i = sscanf( s, %=, szfilename ) ; / szfilename=notepad 如果参数格式是:%=: ,那么也可以从 notepad:001读取notepad 使用例子: char s=notepad=001 ;char szname 32 = ;char szver 32 = “” ;sscanf( s, %=%s, szname , szver ) ; /

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论