每日一题——第一百三十六题

sprintf函数与sscanf函数的使用示例

1、sprintf函数

sprintf 函数是 C 语言标准库中的一个函数,用于将格式化的数据写入字符串。它的全称是 “string print”,意味着将格式化的输出打印(或写入)到一个字符串中。下面是 sprintf 函数的使用方法和一些注意事项:

原型

int sprintf(char *str, const char *format, ...);

参数
char *str:指向目标字符串的指针,该字符串将存储格式化后的输出。确保这个字符串有足够的空间来存储所有的输出,否则可能会导致缓冲区溢出。
const char *format:格式字符串,它指定了后续参数如何被格式化和插入到目标字符串中。格式字符串可以包含普通的字符(这些字符将被直接复制到目标字符串中)和格式说明符(这些说明符将被替换为对应参数的格式化值)。
…:可变数量的参数,这些参数的类型和数量应与格式字符串中的格式说明符相匹配。
返回值
sprintf 函数返回写入的字符数(不包括结尾的空字符)。如果返回值是负值,则表示发生了错误。

示例

#include <stdio.h>
 
int main() {
    char buffer[50]; // 准备一个足够大的字符数组作为目标字符串
    int age = 25;
    float height = 5.9;
 
    // 使用 sprintf 函数将格式化的数据写入 buffer
    sprintf(buffer, "Name: John, Age: %d, Height: %.1f meters", "John", age, height);
 
    // 打印结果
    printf("%s\n", buffer);
 
    return 0;
}

2、sscanf 函数

sscanf 函数是 C 语言标准库 <stdio.h> 中的一个函数,它用于从字符串中读取格式化的数据。与 scanf 函数类似,但 sscanf 是从指定的字符串中读取输入,而不是从标准输入(如键盘)中读取。

原型

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

参数
const char *str:指向要读取的源字符串
const char *format:格式字符串,指定了要从源字符串中读取的数据的格式。
…:可变数量的参数,这些参数是指向变量的指针,用于存储从源字符串中读取的数据。这些变量的类型应与格式字符串中的格式说明符相匹配。
返回值
sscanf 函数返回成功读取并赋值的数据项的个数。如果读取失败或没有匹配的数据项,则返回 0。如果发生错误,返回值可能是负值,但这种情况在标准 C 中并未明确规定,通常依赖于具体的实现。

示例
示例 1:读取整数和字符串

#include <stdio.h>
 
int main() {
    char input[] = "123 abc";
    int num;
    char str[10];//用于存储读取的字符串
 
    sscanf(input, "%d %s", &num, str);
 
    printf("num = %d, str = %s\n", num, str);
 
    return 0;
}
//输出:
//num = 123, str = abc

在这个例子中,sscanf 函数从字符串 “123 abc” 中读取了一个整数和一个字符串,并将它们分别存储在变量 num 和 str 中。

示例 2:读取浮点数和字符

#include <stdio.h>
 
int main() {
    char input[] = "3.14 c";
    float f;
    char c;
 
    sscanf(input, "%f %c", &f, &c);
 
    printf("f = %.2f, c = %c\n", f, c);
 
    return 0;
}
//输出:
//f = 3.14, c = c

在这个例子中,sscanf 函数从字符串 “3.14 c” 中读取了一个浮点数和一个字符,并将它们分别存储在变量 f 和 c 中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值