1
我目前遇到此问题。我想打印出#
,就像我在下面的代码块中定义的那样,事情是当我通过printf
参数作为printf("%*s\n", x, BORDER)
时,它打印出我在开头定义的所有#
。但是,当我将它编写为printf("%.*s\n", x, BORDER)
时,它将打印出与我想要的一样多的#
。有人能告诉我触发这个问题的区别是什么?我知道宽度和精度站在了重要的作用,当涉及到浮点数打印,但这是字符串打印出来......printf函数字符串打印输出参数用法
#include <stdio.h>
#include <string.h>
#define BORDER "############################################"
int main(void) {
char word[26];
int x;
scanf("%25s", word);
x = strlen(word) + 2;
printf("x = %d\n", x);
printf("%*s\n", x, BORDER);
printf("#%s#\n", word);
printf("%*s\n", x, BORDER);
return 0;
}
时间阅读手册页?它涉及很多。手册页应始终是您的第一个参考。 –
字符串的指定*宽度*和指定*精度*之间的差异。请参阅[printf' **](http://en.cppreference.com/w/c/io/fprintf)的文档,并仔细阅读。使用's'时,*“精度指定要写入的最大字节数”。* – WhozCraig
是阅读手册页。它会特别详细地告诉您:“...或s和S转换的字符串打印的最大字符数” – kaylum