当前位置:首页 > 开发语言/框架 > C++

[新手]关于c的有关问题

优良自学吧提供[新手]关于c的有关问题,[新手求助]关于c的问题include <stdio.h> #include <string.h> int main(void) {         char 

[新手求助]关于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);
}
------解决思路----------------------
引用:
Quote: 引用:

第二个参数会和第一个参数配对

%s 对应第二个参数应该是对应字符串的地址
对于 char name[20];
name 就是其地址,而&name为其地址的地址

谢谢啊,今天我一直试也逝去了,但请问为啥我char类型的不用&,但是float类型的又要&呢?在网上没看到相关的

不是char类型不用&  而是 char name[20]中的name 表示的是char型数组,而name可以表示数组的首地址,
如果是 
char name;就需要&了   而且对应的是%c

(本文来自互联网,不代表搜站(http://www.ylzx8.cn/)的观点和立场)
本站所有内容来自互联网,若本站收录的信息无意侵犯了贵司版权,请给我们来信(ylzx8cn@163.com),我们会及时处理和回复,谢谢