开发者社区> 问答> 正文

v新手关于char的问题,自学不懂

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);
}

展开
收起
a123456678 2016-03-20 14:42:28 1964 0
1 条回答
写回答
取消 提交回答
  • scanf("%s",&name); //&name改成name,它的第二个参数是要首地址,而name就是首地址
    printf("“%s”n",strlen(name)+2,name);//这个是因为 strlen()的返回值是size_t类型而只能代替int型

    2019-07-17 19:09:42
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载