C 我可以像printf一样存储格式化字符串吗?

C 我可以像printf一样存储格式化字符串吗?,c,string,string-formatting,C,String,String Formatting,在C语言中有没有一种方法可以像在printf中一样格式化字符串,而是将其存储在变量中?我正在尝试将其用于系统调用,以便在调用中包含一个变量。在使用字符串之前,您可以使用或在C99/C11中格式化字符串 int sprintf(char *str, const char *format, ...); int snprintf(char *str, size_t size, const char *format, ...); 例如: // Use the value of an integer

在C语言中有没有一种方法可以像在printf中一样格式化字符串,而是将其存储在变量中?我正在尝试将其用于系统调用,以便在调用中包含一个变量。

在使用字符串之前,您可以使用或在C99/C11中格式化字符串

int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...); 
例如:

 // Use the value of an integer 'n' as argument in 'perror' (C99).

#include <limits.h>
#include <stdio.h>

char argument[sizeof(int) * CHAR_BIT + 1];
snprintf(argument, sizeof argument, "%d", n);
perror(argument);
在使用字符串之前,可以使用C99/C11中的或对其进行格式化

int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...); 
例如:

 // Use the value of an integer 'n' as argument in 'perror' (C99).

#include <limits.h>
#include <stdio.h>

char argument[sizeof(int) * CHAR_BIT + 1];
snprintf(argument, sizeof argument, "%d", n);
perror(argument);

哦,我看起来很累。我想写sizeofint*CHAR\u位。谢谢。对于要包含%d个输出的可移植缓冲区大小,建议使用1+SizeOffint*3+1。INT_MAX*CHAR_BIT有点大。@ouah:噢,我看起来很累。我想写sizeofint*CHAR\u位。谢谢。对于要包含%d个输出的可移植缓冲区大小,建议使用1+SizeOffint*3+1。INT_MAX*CHAR_位有点大。