(sscanf|sprintf)的用法

版权声明:本文为博主原创文章,转载请注明。 https://blog.csdn.net/qq_41181881/article/details/79573160

sscanf:

将固定格式的字符数组内的一些数字字符,转换成整形;

具体用法举例分析更容易说明:

用IP来举例(可以用于判断IP是否合法)

#include<stdio.h>
int main()
{
    char ip[20];
    int i1,i2,i3,i4;
    gets(ip);//IP的样例:192.168.1.130
    sscanf(ip, "%d.%d.%d.%d", &i1, &i2, &i3, &i4);
    printf("%d\n",i1);
    printf("%d\n",i2);
    printf("%d\n",i3);
    printf("%d\n",i4);

}

输出结果


很明显,字符串被分为4个整数;特别要注意的一个细节就是因为ip的是用小数点来隔开四个整数,所以在sscanf中%d之间的小数点是不可省略的。


sprintf:

简单来说,就是将数值类型转化为字符类型。跟sscanf相反。举例分析:

#include<stdio.h>
#include<string.h>
int main()
{
    char a[20];
    int i,x=12345;
    sprintf(a,"%d",x);//把整形x转化为字符数组
    for(i=0;i<5;i++)//把字符串一个一个输出
    {
        printf("%c\n",a[i]);
    }

}

输出结果:


除此之外sprintf还可以将两个字符数组连接:

#include<stdio.h>
#include<string.h>
int main()
{
    char a[20]={"Hello"},b[20]={"Word"},sum[20];
    int i;
    sprintf(sum,"%s %s",a,b);//链接字符串a和b  如果字符串a b之间没有空格则连接的字符串ab之间也没有空格
    for(i=0;i<10;i++)
    {
        printf("%c",sum[i]);
    }

}

输出结果:




猜你喜欢

转载自blog.csdn.net/qq_41181881/article/details/79573160