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 中。