sprintf() sscanf()的使用

来源:互联网 发布:网络数据拦截分析工具 编辑:程序博客网 时间:2024/04/30 05:10

看了一些博客后,自己总结了一下,力求简单明了地说出这两个函数的作用和使用方法

1.sprintf()函数

  sprintf函数原型为 int sprintf(char *str, const char *format, ...)

        按我的话来说,参数分为三部分,第一部分str是要存放转换结果的字符串,参数第二部分" ....."是转换的格式,第三部分是转换的原对象

        作用是格式化字符串,具体功能如下所示:

(1)将数字变量转换为字符串

  #include<stdio.h>int main(){    char str[100];    int a=10;    sprintf(str,"%d",a);//存放结果的字符串为str,按十进制转换,转化的对象是a    printf("%s\n",str);}

(2)得到整型变量的16进制和8进制字符串。

#include<stdio.h>int main(){char str[100];int a=16;sprintf(str,"%x",a);printf("%d转换为十六进制:%s\n",a,str);sprintf(str,"%o",a);printf("%d转化为八进制:%s\n",a,str);}

(3)连接多个字符串。

#include<stdio.h>int main(){char str[100];char a[20]="I am ";char b[20]="a ";char c[20]="student";sprintf(str,"%s%s%s",a,b,c);printf("%s\n",str);}
2.sscanf()函数

    原型:int sscanf (const char *str,const char * format,........);

     按我的话来说,参数分为三部分,第一部分str是转换的原对象,参数第二部分" ....."是转换的格式,第三部分是要存放转换结果的字符串,跟sprintf相反

  1.取前N个字符 "%Ns"

  

#include<stdio.h>int main(){char str[100];sscanf("123456 abcd","%4s",str);printf("%s\n",str); //1234}
   2.取前面指定字符集的串,遇到非指定字符集内的元素就停止,字符集可以只有一个元素,可以是空格

#include<stdio.h>int main(){    char str[100];    sscanf("123456 123abcd","%[1-9]s",str);//取前面在1~9之间的字符,遇到不是该字符集内的字符,停止     printf("%s\n",str);//123456     char str1[100];    sscanf("123456 123abcd","%[1]s",str1);//字符集只有一个元素'1',所以同样,取前面的1的字符,遇到不是就停止     printf("%s\n",str1);}
    3. ^表示取反, [^a-z]表示从原字符串中取第一个字符起,不在a-z之间的字符,遇到是a-z这个范围的就停止

#include<stdio.h>int main(){    char str[100];    sscanf("123456 123abcd","%[^a-z]s",str);//取前面在不再a-z之间的字符,遇到是该字符集内的字符,停止     printf("%s\n",str);//123456     char str1[100];    sscanf("123456 123abcd","%[^z]s",str1);//取前面不是的z的字符,遇到是就停止     printf("%s\n",str1);    char str2[100];    sscanf("123456 123abcd","%[^ ]s",str2);//读取到空格 停止[^ ]     printf("%s\n",str2);}
注意: 字符分大小写[a-z] [A-Z]两者的字符集不同

(1)-: 表示范围,如:%[1-9]表示只读取字符串前1-9这几个数字字符, %[a-z]表示只读取字符串前a-z小写字母,类似地 %[A-Z]只读取字符串前大写字母,

         遇到不再内的字符就停止
(2)^: 表示不取,如:%[^1]表示读取除字符串前'1'以外的所有字符 %[^ #]表示字符串前除‘#’以外的所有字符
(3),: 范围可以用","相连接 如%[1-9,a-z]表示同时取1-9数字和a-z小写字母

原则:从第一个在指定范围内的数字开始读取,到第一个不在范围内的数字结束

部分内容来自:http://www.cnblogs.com/gudu0723/archive/2012/11/02/2751400.html

                        http://www.cnblogs.com/Anker/p/3351168.html


0 0
原创粉丝点击