1樓:
最基本的方法就是:
mx[0].name[0] = x;
mx[0].information[0][0] = x;
以此類推 ……
陣列不能整體直接賦值,以下情況除外:
1. 初始化時賦值:
typedef struct star
char name[8];
char information[2][2];
}mx;
mx mx[2] = ,
}},//為了你能看清楚mx[0]分了三行,此處之前是mx[0],下面是mx[1]
,}}};
2. 把陣列放在結構裡,兩個結構可以直接賦值。
3. memcpy等方法。
需要注意幾點,
你的name是個位元組,所以如果name的大括號裡用「zhangsan」,會踩記憶體,初學者常犯的錯誤,因為這種賦值隱含了"\0",字串的截止符,換句話說你賦值zhangsan是8個byte+「\0」,這樣就超過name[8]了。
你可以嘗試指標×pname;
希望對你有所幫助。
2樓:匿名使用者
struct starmx=
3樓:匿名使用者
,},
4樓:滄海雄風
mx[2] =,};
c語言,結構體中的陣列怎麼賦值,?
5樓:念憶
intmain(void);
printf("%d,%s\n",bao.id,bao.name);//輸出是4224528,空(應該是null)
//structstudentsbao=;可以。第一種賦值方法
//strcpy(bao.name,"bao");//可以,
//printf("%d,%s\n",bao.id,bao.name);
//bao.name="bao";錯誤「stray'\351'inprogram」其他是亂碼,
//bao.name[0]='a';
//bao.name[0]='/0';
//printf("%d,%s\n",bao.id,bao.name);
/*這樣可以,*/
//chararr[10]="baobao";
////bao.name=arr;//error"assignmenttoexpressionwitharraytype"
//scanf("%s",bao.name);//可以,
//printf("%d,%s\n",bao.id,bao.name);
//所以scanf那一類函式都可以。
//還有就是memcpy函式也是可以
return0;}
6樓:yesyes科
1、首先開啟vs2010軟體,新建一個專案,如圖所示。
2、裡面包含標頭檔案,如圖所示。
3、然後輸入入口函式main。
4、接著定義一個結構體,宣告結構體變數,如圖所示。
5、然後給結構體裡面的成員變數賦值。
6、最後列印結構體成員,輸出結果就完成了。
7樓:問明
(1)用字元常量逐個初始化陣列。例如:
char a[8]=;
把8個字元依次分別賦給c[0]~c[7]這8個元素。
如果在定義字元陣列時不進行初始化,則陣列中各元素的值是不可預料的。如果花括號中提供的初值個數(即字元個數)大於陣列長度,則出現語法錯誤。
如果初值個數小於陣列長度,則只將這些字元賦給陣列中前面那些元素,其餘的元素自動定為空字元(即'\0')。
如果提供的初值個數與預定的陣列長度相同,在定義時可以省略陣列長度,系統會自動根據初值個數確定陣列長度。
例如:char c=;
這時c陣列的長度自動定為9。也可以定義和初始化一個二維字元陣列,例如:
char diamond[5][5]=,,,
,};用它代表一個菱形的平面圖形。
(2)字串常量初始化陣列。例如:
char c=;
可寫為:char c=;
或去掉{}寫為:char c="c program";
char c=;
其定義的一般形式是:char陣列名[資料長度]
例如:char c[10];
c[0]='i';c[1]='';c[2]='l';c[3]='o';c[4]='v';c[5]='e';c[6]='';c[7]='y';c[8]='o';c[9]='u';
以上定義了c為字元陣列,包含10個元素。
由於字元型資料是以整數形式(ascii**)存放的,因此也可以用整型陣列來存放字元資料,例如:
int c[10];
但這時每個陣列元素佔2個位元組的記憶體單元,浪費儲存空間。
字元陣列也可以是二維或多維陣列,例如:
char c[5][10];
即為二維字元陣列。
初始化字元陣列的初始化與數值型陣列初始化沒有本質區別。但它除了可以逐個給陣列元素賦予字元外,也可以直接用字串對其初始化。
輸入輸出
字元陣列的輸入
(1)用getchar()或scanf()的'%c'格式符對陣列進行字元賦值。例如,對於陣列a[10]:用getchar()賦值:
for(i=0;i<10;i++)
a=getchar();
用scanf()賦值:
for(i=0;i<10;i++)
scanf("%c",&a);
(2)用scanf()的'%s'格式對陣列賦值。還是對於陣列a[10]:
scanf("%s",a);
或scanf("%s「,&a[0]);
輸入」c program「並回車時,a陣列會自動包含一個以」\0「結尾的字串」c program「。
字元陣列的輸出
(1)用putchar()或printf()的『%c』格式符對陣列進行字元賦值。例如,對於陣列a[10]:用putchar()賦值:
for(i=0;i<10;i++)
a=putchar();
用printf()賦值:
for(i=0;i<10;i++)
printf("%c",a);
輸出結果為:
c program
(2)用printf()的'%s'格式對陣列賦值。還是對於陣列a[10];
printf("%s",a);
輸出結果為:
c program
8樓:老朱
s.a[0]=1;
s.a[1]=2;
9樓:
你程式中的那種賦值方式只能在陣列定義的時候賦值,定義完成後,就要一個一個的賦值。比如:s.
a[0] = 1;s.a[1] = 2;如果賦值有一定規律的話,可以用for迴圈;如果賦的值一樣的話,可以用 memset(s.a,0,sizeof(s.
a));,memset一般用於陣列初始化和清零。
10樓:匿名使用者
如果沒記錯的話只能是陣列初始定義的時候才可以這樣賦值。
只能一個一個賦值,s.a[0]=1; 這樣是合法的
想給陣列賦值的話用迴圈吧
11樓:army1椒rz迫
對於已經定義好了的陣列,肯定不能用這樣賦值啦,給結構體賦值其實就跟其他的變數賦值一樣,難道你可以
int a[3];
a=;這個給一個int陣列賦值嗎,不行啊。
正確的做法就是像其他變數一樣一個一個賦值,當然也可在結構體初始化時賦值
求助一個c語言結構體陣列賦初值的問題
12樓:匿名使用者
typedef struct _test test;
對結構體賦值,一般是順序賦值,或者指定賦值比如test test = ,//對應id, name, level, stock, price, d
,//這個就是指定賦值,點後面接的是結構體成員名};
c語言 如何在結構體中給巢狀的結構體賦值?
13樓:自我程式設計
結構體巢狀,賦初值,大括號巢狀就可以了。
問題是你**寫錯了。
你定義的old1不是結構型別,而是結構變數。
在shuju中成員要寫struct old 變數名;
不能寫struct old1。
下面是演示**:(補充:如果想定義一個結構型別別名,要用typedef)
#include
struct old
int year;
int month;
int day;
}old1=;
struct shuju
char name[10];
char gender[6];
int height;
struct old old1;
char access[9];
}shuju1=,"well"};
int main()
printf("結構變數old1的初值: %d %d %d\n",old1.year,old1.month,old1.day);
printf("結構變數shuju1中成員old1的初值:%d %d %d\n",shuju1.old1.
year,shuju1.old1.month,shuju1.
old1.day);
printf("我特意起一樣的名字,就是告訴你這兩個變數是不一樣的。\n");
return 0;
/*(補充:如果想定義一個結構型別別名,要用
typedef struct old
int year;
int month;
int day;
}old1;//這樣old1才表示是一個型別,然後再定義該型別變數時,才可以寫 old1 變數名;)*/
14樓:哼呀弟
, "well"};
15樓:匿名使用者
加個大括號試試 }
c語言,結構體中的陣列怎麼賦值,?
16樓:問明
(1)用字元常量逐個初始化陣列。例如:
char a[8]=;
把8個字元依次分別賦給c[0]~c[7]這8個元素。
如果在定義字元陣列時不進行初始化,則陣列中各元素的值是不可預料的。如果花括號中提供的初值個數(即字元個數)大於陣列長度,則出現語法錯誤。
如果初值個數小於陣列長度,則只將這些字元賦給陣列中前面那些元素,其餘的元素自動定為空字元(即'\0')。
如果提供的初值個數與預定的陣列長度相同,在定義時可以省略陣列長度,系統會自動根據初值個數確定陣列長度。
例如:char c=;
這時c陣列的長度自動定為9。也可以定義和初始化一個二維字元陣列,例如:
char diamond[5][5]=,,,
,};用它代表一個菱形的平面圖形。
(2)字串常量初始化陣列。例如:
char c=;
可寫為:char c=;
或去掉{}寫為:char c="c program";
char c=;
其定義的一般形式是:char陣列名[資料長度]
例如:char c[10];
c[0]='i';c[1]='';c[2]='l';c[3]='o';c[4]='v';c[5]='e';c[6]='';c[7]='y';c[8]='o';c[9]='u';
以上定義了c為字元陣列,包含10個元素。
由於字元型資料是以整數形式(ascii**)存放的,因此也可以用整型陣列來存放字元資料,例如:
int c[10];
但這時每個陣列元素佔2個位元組的記憶體單元,浪費儲存空間。
字元陣列也可以是二維或多維陣列,例如:
char c[5][10];
即為二維字元陣列。
初始化字元陣列的初始化與數值型陣列初始化沒有本質區別。但它除了可以逐個給陣列元素賦予字元外,也可以直接用字串對其初始化。
輸入輸出
字元陣列的輸入
(1)用getchar()或scanf()的'%c'格式符對陣列進行字元賦值。例如,對於陣列a[10]:用getchar()賦值:
for(i=0;i<10;i++)
a=getchar();
用scanf()賦值:
for(i=0;i<10;i++)
scanf("%c",&a);
(2)用scanf()的'%s'格式對陣列賦值。還是對於陣列a[10]:
scanf("%s",a);
或scanf("%s「,&a[0]);
輸入」c program「並回車時,a陣列會自動包含一個以」\0「結尾的字串」c program「。
字元陣列的輸出
(1)用putchar()或printf()的『%c』格式符對陣列進行字元賦值。例如,對於陣列a[10]:用putchar()賦值:
for(i=0;i<10;i++)
a=putchar();
用printf()賦值:
for(i=0;i<10;i++)
printf("%c",a);
輸出結果為:
c program
(2)用printf()的'%s'格式對陣列賦值。還是對於陣列a[10];
printf("%s",a);
輸出結果為:
c program
c語言二維陣列問題
寫完以後我發現有點長,樓主給點耐心看,不懂我們再交流 a是整個二維陣列的首地址,short長度為2,sizeof a 2 5 5 50 a 1指向二維陣列的第二個元素,它僅僅是一個指標,如果在a 1前面加一個 號,就是第二個元素的值,即a 0 1 所以,a 1是一個指標,它指向二維陣列中的某個數,指...
C語言,怎樣將二維陣列存入檔案
玄清佳 int main 比如說你要把它存到一個檔案中。現在你要現在你的源程式的目錄下建立一個比如說是data.txt檔案 現在開始寫程式 file fp if fp fopen data.txt w null 出錯處理 for int i 0 i 2 i for int j 0 j 3 j fpr...
c語言中指標做函式引數傳遞二維陣列
include void fun int p1 3 int p2 3 int main int p1 3 3 int p2 3 3 int i 0,j 0 fun p1,p2 for i 0 i 3 i for j 0 j 3 j printf d p2 i j printf n return 0 ...