include
#include
int main(void)
{
char name [20];
printf("你丫的叫啥?\n");
scanf("%s",&name);
printf("“%s”\n",name);
printf("“%20s”\n",name);
printf("“%-20s”\n",name);
printf("“%*s”\n",strlen(name)+2,name);
return(0);
}
请问上面这一串代码哪里出错了啊,新人自学不懂啊,错误警告是这样的:错误警报
2.c: In function ‘main’:
2.c:7:2: warning: format ‘%s’ expects argument of type ‘char ’, but argument 2 has type ‘char ()[40]’ [-Wformat=]
scanf("%s",&name);
^
2.c:11:2: warning: field width specifier ‘*’ expects argument of type ‘int’, but argument 2 has type ‘size_t’ [-Wformat=]
printf("“%*s”\n",strlen(name)+2,name);
下面这一串为啥又是对的呢?
#include
#include
int main(void)
{
char name[20];
int width;
printf("Please input your name:");
scanf("%s",name);
printf("A:\"%s\"\n",name);
printf("B:\"%20s\"\n",name);
printf("C:\"%-20s\"\n",name);
width=strlen(name)+3;printf("D:\"%*s\"\n",width,name);//*对应width
return(0);
}
printf("“%*s”\n",strlen(name)+2,name);这个机油问题,那个星号肯定不对,%s要输入是字符,strlen是数字,而且你还是两个参数,printf中只有一个
printf格式不对printf("%d:%s",strlen(nane)+2,name),"%d:%s"是格式化控制符,最后输出时,strlen(name)+2会替换在%d的位置上,name会替换在
%s的位置上。
scanf("%s",&name); //&name改成name,它的第二个参数是要首地址,而name就是首地址
printf("“%*s”\n",strlen(name)+2,name);//这个是因为 strlen()的返回值是size_t类型而*只能代替int型