sun*_*oon 1 c printf format-specifiers
int main()
{
char buf1[100], buf[100]="ddl";
sprintf(buf1, "log_name = '%.*s'", buf);
}
Run Code Online (Sandbox Code Playgroud)
上面的程序崩溃了.我无法理解为什么会崩溃.据我所知,在角色printf跳过格式代码并将buf分配给下一格式代码之前.但这里有什么意义?
格式说明符"%.*s"要求指定要写入的字符数:
sprintf(buf1, "log_name = '%.*s'", 3, buf); /* For example */
/* ^ */
Run Code Online (Sandbox Code Playgroud)
在发布的代码中只buf提供了缺少参数,这是未定义的行为(在这种情况下是崩溃).
注意,在这种情况下,"%s"服务和buf空终止一样(除非buf必须复制所有字符,否则不需要长度).
| 归档时间: |
|
| 查看次数: |
1139 次 |
| 最近记录: |