推荐答案
// www.javascriptcn.com code example
#include <stdio.h>
int main() {
char buffer[100];
int year = 2023;
char month[] = "October";
int day = 5;
// 使用 sprintf 将格式化字符串写入 buffer
sprintf(buffer, "Today is %s %d, %d", month, day, year);
// 输出 buffer 中的内容
printf("%s\n", buffer);
return 0;
}本题详细解读
1. sprintf 函数的基本用法
sprintf 是 C 标准库中的一个函数,用于将格式化的数据写入字符串中。它的原型如下:
int sprintf(char *str, const char *format, ...);
str:指向一个字符数组的指针,用于存储格式化后的字符串。format:格式化字符串,类似于printf中的格式字符串。...:可变参数列表,根据format中的格式说明符提供相应的数据。
sprintf 函数会将格式化后的字符串写入 str 所指向的字符数组中,并返回写入的字符数(不包括结尾的空字符)。
2. 示例代码解析
在示例代码中,我们定义了一个字符数组 buffer,用于存储格式化后的字符串。然后使用 sprintf 将日期信息格式化为字符串并存储在 buffer 中。
sprintf(buffer, "Today is %s %d, %d", month, day, year);
%s:用于格式化字符串month。%d:用于格式化整数day和year。
最后,使用 printf 输出 buffer 中的内容:
printf("%s\n", buffer);3. 注意事项
sprintf不会检查目标字符串str的长度,因此在使用时要确保str有足够的空间来存储格式化后的字符串,否则可能会导致缓冲区溢出。- 如果需要更安全的版本,可以使用
snprintf,它可以指定最大写入的字符数,避免缓冲区溢出。
snprintf(buffer, sizeof(buffer), "Today is %s %d, %d", month, day, year);
snprintf的第三个参数指定了最大写入的字符数,确保不会超出buffer的大小。