为了账号安全,请及时绑定邮箱和手机立即绑定

为什么名字打不出来?

#include <stdio.h>

struct nam
{
	char name[20];
	int old;
	float height;
	struct nam * next;
};
int main()
{
	struct nam a,b, *head;
	a.name="李";
	a.old=16;
	a.height=70.2;
	b.name="林";
	b.old=21;
	b.height=65.3;
	head=&a;
	a.next=&b;
	b.next=NULL;
	struct nam *w;
	w=head;
	while (w!=NULL){
		printf("姓名:%s\n年龄:%d\n身高:%f\n",w->name,w->old,w->height);
		w=w->next;
	}
	return 0;
}

错误显示为 [Error] incompatible types in assignment of 'const char [3]' to 'char [20]'

正在回答

4 回答

#include <stdio.h>

 

struct nam

{

    char *name[20];  //用指针

    int old;

    float height;

    struct nam * next;

};

int main()

{

    struct nam a,b, *head;

    a.name[0]="李";  //第一个地址

    a.old=16;

    a.height=70.2;

    b.name[0]="林";

    b.old=21;

    b.height=65.3;

    head=&a;

    a.next=&b;

    b.next=NULL;

    struct nam *w;

    w=head;

    while (w!=NULL){

        printf("姓名:%s\n年龄:%d\n身高:%f\n",w->name[0],w->old,w->height); //把地址取出来

        w=w->next;

    }

    return 0;

}

//我就想到这个办法能打印名字出来

0 回复 有任何疑惑可以回复我~
#1

qq_隐匿_03229380 提问者

可是编辑器会警告啊
2016-05-28 回复 有任何疑惑可以回复我~
#2

HuangQingFeng 回复 qq_隐匿_03229380 提问者

警告?是什么警告呢?
2016-05-28 回复 有任何疑惑可以回复我~
#3

qq_隐匿_03229380 提问者

[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings] 这个
2016-05-28 回复 有任何疑惑可以回复我~
#4

HuangQingFeng 回复 qq_隐匿_03229380 提问者

//导入String头文件 //修改下面的代码 #include <string.h> strcpy (a.name,"李"); strcpy (b.name,"林");
2016-05-28 回复 有任何疑惑可以回复我~
#5

qq_隐匿_03229380 提问者

不错哦。。非常谢谢你啊。。。
2016-05-28 回复 有任何疑惑可以回复我~
查看2条回复

因为name实际上是一个指向字符串的指针,但是不能改变指向。用赋值运算符将另一个字符串赋值给她实际上就是改变了name的指向,这显然是错误的。可以用字符串操作函数strcpy来将另一个字符串copy给name。

0 回复 有任何疑惑可以回复我~

#include <stdio.h>
struct new{
  char name[20];
  int age;
  float weight;
  float hight;
  struct new *next;
};

int main()
{
  struct new a={"lijianhui",27,60,173};
  struct new b={"dengchao",25,40,158};
  struct new c={"chenwei",27,70,173};
  struct new d={"dengjie",27,50,158};

  struct new *head=&a;
  a.next=&b;
  b.next=&c;
  c.next=&d;
  d.next=NULL;

  struct new *p;
  p=head;
  while(p!=NULL)
  {
     printf("%s,%d,%.f,%.f\n",p->name,p->age,p->weight,p->hight);
     p=p->next;
  }

return 0;

}

0 回复 有任何疑惑可以回复我~
#1

qq_隐匿_03229380 提问者

这种方式我已经学了
2016-05-30 回复 有任何疑惑可以回复我~

数据不兼容

0 回复 有任何疑惑可以回复我~
#1

qq_隐匿_03229380 提问者

怎么改才能通过。
2016-05-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么名字打不出来?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信