[新手求助]关于c的问题
include <stdio.h>
#include <string.h>
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<stdio.h>
#include<string.h>
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);
}