我有一个冲刺如下 -
sprintf (output,"%.*s%s%s%s",length,Str1,Str2,Str3,Str4);
所有字符串都包含有效数据,并且长度参数也是正确的。然而,在此冲刺之后,输出仍然不稳定。
如果我用 %s 替换 %.* 并删除长度参数,它工作得很好。
试试这个
改变
sprintf (output,"%*.s%s%s%s",length,Str1,Str2,Str3,Str4);
自
sprintf (output,"%.*s%s%s%s",length,Str1,Str2,Str3,Str4);
^^
没有输出任何内容的原因是,如果省略点后的尾随数字或星号,则精度为零。 %*.
修改的是宽度而不是精度。相反,你想要%.*
.请注意,这仅适用于它所属的转换说明符。即:
char output[100];
char str1[] = "hello";
char str2[] = "there";
int length = 4;
sprintf(output, "%.*s%s", length, str1, str2);
printf("%s", output);
输出:
hellthere