C 将x字符追加到字符串

C 将x字符追加到字符串,c,string,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", filena

我希望下面的几行最多能从变量
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”之前使用文件名)。
我做错了什么

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

这为s和s转换提供了从字符串打印的最大字符数[…]

对其他人来说,你没有做错任何事,除了有错误的期望。报告明确指出:

在任何情况下,不存在或较小的场宽度都不会导致场的截断;如果转换结果大于字段宽度,则字段将展开以包含转换结果

您期望截断,但没有得到它,因为它不是这样工作的


我测试了基于精度的一个(使用
%.*s
),它工作得很好。

您的第一次尝试应该可以工作,它使用的精度具有正确的语义,根据:

这为s和s转换提供了从字符串打印的最大字符数[…]

对其他人来说,你没有做错任何事,除了有错误的期望。报告明确指出:

在任何情况下,不存在或较小的场宽度都不会导致场的截断;如果转换结果大于字段宽度,则字段将展开以包含转换结果

您期望截断,但没有得到它,因为它不是这样工作的


我测试了基于精度的一个(使用
%.*s
),它工作得很好。

呃,我只是随意地遵循这个,忙得没时间去破解手册,但有没有办法截断?我知道至少对于数字,有一种
n.n
语法,其中一个值会截断。这对字符串不起作用吗?呃,我只是随便地跟着它走,忙得连一本手册都没法破解,但难道没有办法截断吗?我知道至少对于数字,有一种
n.n
语法,其中一个值会截断。这不适用于字符串吗?