c primer plus 里的一个课后题:
其中有一个语句是这样的
int width = printf(""%s".\n",name);
没看懂为什么printf可以赋值给int类型数据
答案原码:
#include <stdio.h>
int main(void)
{
char name[40];
int width;
printf("Please input your name:");
scanf("%s",name);
width = printf("\"%s\".\n",name); //就是这句。
width -= 4;
printf("\"%20s\".\n",name);
printf("\"%-20s\".\n",name);
printf("\"%*s\".\n",(width+3),name);
return 0;
}
printf返回的是打印的字符的长度。这段代码这样用,应该是为了根据字符串的长度调整布局
printf("\"%*s\".\n",(width+3),name);
意思是输出字符串name,但至少占width+3个位置,不足的在字符串name左边补空格
printf返回值为int型,返回字符或数字的个数