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
语法,其中一个值会截断。这不适用于字符串吗?