将x个字符附加到字符串

时间:2014-04-08 16:04:44

标签: c string

我希望下面的行最多可以从变量filename获取6个字符,并将其附加到变量dmpfilename

sprintf (dmpfilename, "InstrumentList_FULL.csv_%.*s",6,  filename);
sprintf (dmpfilename, "InstrumentList_FULL.csv_%*s" ,6,  filename);
sprintf (dmpfilename, "InstrumentList_FULL.csv_%6s",     filename);

但是他们附加了更多的字符(他们将文件名带到' \ 0')。 我究竟做错了什么?

1 个答案:

答案 0 :(得分:4)

你的第一次尝试应该有效,它根据the manual page使用具有正确语义的精度:

  

这为s和S转换提供了从字符串打印的最大字符数。

对于其他人,除了错误的期望外,你没有做错任何事。 manual page明确指出:

  

在任何情况下,不存在或小的字段宽度都不会导致字段截断;如果转换结果比字段宽度宽,则扩展该字段以包含转换结果。

你期待截断但却没有得到它,因为那不是它的工作方式。

我测试了基于精度的(%.*s)并且它运行良好。