sscanf与sprintf详解及常见用法

sprintf函数原型

int sprintf(char *str,const char *format,…)

作用:格式化字符串

  • 将数字变量转化成字符串变量

  • 得到整形变量的16和8进制

  • 连接多个字符串

    1     char str[256];
     2    int data = 1024;
     3    //将data转换为字符串
     4     sprintf(str,"%d",data); 
     
     5     //获取data的十六进制
     6     sprintf(str,"0x%X",data);
     
     7     //获取data的八进制
     8     sprintf(str,"0%o",data);
      
     9     const char *s1 = "Hello";
     10     const char *s2 = "World";
     11     //连接字符串s1和s2
     12     sprintf(str,"%s %s",s1,s2);
     结果依次为:
                  1024
                  0x400
                  02000
                  hello world
    

    sscanf函数

    int sscanf(const char *str,const char *format,…)

const char *s = "http://www.baidu.com:1234";
    char protocol[32] = { 0 };
    char host[128] = { 0 };
    char port[8] = { 0 };
    sscanf(s, "%[^:]://%[^:]:%[1-9]", protocol, host, port);
    //%[^:]表示取到:为止,%[1-9]: -表示范围,取1-9的数字
    printf("protocol: %s\n", protocol);
    printf("host: %s\n", host);
    printf("port: %s\n", port);
    输出结果:
    protocol: http
    host: www.baidu.com
    port: 1234

(1)根据格式从字符串中提取数据。如从字符串中取出整数、浮点数和字符串等。

char str[]="123";
int a;
sscanf(str,"%d",&a);  //a=123;
//浮点数
char str[]="123.321";
double a;
sscanf(str,"%lf",&a);  //a=123.321
16进制转化为10进制
char str[]="AF";
int a;
sscanf(str,"%x",&a);  // a=175;

(2)取指定长度的字符串

int a;
char str[] = "123445";
sscanf(str,"%3d",&a);  //取三位字符串

(3)取到指定字符为止的字符串

    char str[]="56787ff6543";
    char ch[100];
    sscanf(str,"%[^4]",ch);
    cout<<ch<<endl; //取到4就停

(4)取仅包含指定字符集的字符串

sscasnf("12345ddds",%[1-9],buf);  取1到9的数字

(5)取到指定字符集为止的字符串

sscasnf("12345ddds",%[A-Z],buf);  取大写字母为止
上一篇:怎么样连接两个char*型的字符串变量,


下一篇:PTA-C语言 习题9-3 平面向量加法 (15分)