是否有任何C函数(或方法)将格式化的字符串作为普通字符串获取?
例如:
printf("this is %s", "a message")
Run Code Online (Sandbox Code Playgroud)
我想在一个变量printf()的输出。这应该很简单,但是除了将其写入文件并读取或连接所需的次数外,我没有其他东西。"this is a message"char*
那么,是否有功能或简单的方法将任何格式化的字符串放入C中的单个字符串变量中?
你想要么sprintf任snprintf:
char str[128];
//sprintf(str, "hello %s", "world");
snprintf(str, 128, "hello %s", "world");
Run Code Online (Sandbox Code Playgroud)
请注意,这样snprintf做比较安全,因为它将字符串切成遇到溢出的适当长度。
snprintf安全
snprintfstr在格式字符串format的控制下,将输出写入字符串,该字符串指定如何转换后续参数以输出。与相似sprintf(3),除了size指定要产生的最大字符数。尾随nul字符计入此限制,因此您必须至少size为分配字符str。如果
size为零,则不写入任何内容,并且str可以为null。否则,n-1将丢弃st 以外的输出字符,而不是将其写入str,并且在实际写入的字符的末尾写入一个nul字符str。如果在重叠的对象之间进行复制,则行为是不确定的。成功后,返回大小足够大时将要写入的字符数,不计入终止nul字符。因此,当且仅当返回值是非负数且小于大小时,零终止输出才被完全写入。错误时,返回-1(即编码错误)。
也就是说,snprintf保护程序员免受缓冲区溢出的侵害,而sprintf实际上却并非如此。
| 归档时间: |
|
| 查看次数: |
1939 次 |
| 最近记录: |