(sscanf|sprintf)的用法

本文详细介绍了sscanf和sprintf这两个C语言标准库函数的使用方法。通过实例讲解了如何利用sscanf从字符串中读取指定格式的数据,并验证IP地址的合法性;同时介绍了sprintf如何将数值类型转换为字符类型,包括数值到字符串的转换及字符串连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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]);
    }

}

输出结果:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值