通常你可以像这样在C中打印一个字符串..
printf("No record with name %s found\n", inputString);
但我想用它制作一个字符串,我该怎么做呢?我正在寻找这样的东西..
char *str = ("No record with name %s found\n", inputString);
我希望很清楚我在寻找什么...
答案 0 :(得分:30)
一个选项是使用sprintf
,它的工作方式与printf
类似,但它的第一个参数是指向缓冲区的指针,它应该将结果字符串放入其中。
最好使用snprintf
,它使用包含缓冲区长度的附加参数来防止缓冲区溢出。例如:
char buffer[1024];
snprintf(buffer, 1024, "No record with name %s found\n", inputString);
答案 1 :(得分:10)
您正在寻找sprintf
系列功能。他们的一般格式是:
char output[80];
sprintf(output, "No record with name %s found\n", inputString);
但是,sprintf
本身非常危险。它容易出现称为缓冲区溢出的问题。这意味着sprintf不知道你提供的output
字符串有多大,所以它会愿意为它写出比可用数据更多的数据。例如,这将干净地编译,但会覆盖有效的内存 - 并且没有办法让sprintf
知道它做错了什么:
char output[10];
sprintf(output, "%s", "This string is too long");
解决方案是使用snprintf
函数,它采用长度参数:
char output[10];
snprintf(output, sizeof output, "%s", "This string is too long, but will be truncated");
或者,如果您使用的是Windows系统,请使用_sntprintf
变体和朋友,以防止输入或输出字符串溢出。
答案 2 :(得分:7)
由于这是家庭作业(感谢您将其标记为此类),我建议您仔细查看...printf()
系列函数。
我相信你会找到解决办法:)
答案 3 :(得分:3)
查看sprintf(见下文)。
int n = sprintf(str, "No record with name %s found\n", inputString);
答案 4 :(得分:3)
使用
sprintf(str, "No record with name %s found\n", inputString);