亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么名字打不出來?

#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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號