c語言結構體陣列成員怎麼賦值,C語言結構體陣列成員怎麼賦值?

時間 2021-08-30 09:17:01

1樓:會飛的小兔子

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;

擴充套件資料

c語言結構體陣列的直接賦值及陣列的長度計算:

#include

//自定義一個字串的結構體,包含字串和字串長度兩個變數

typedefstructstrmystr;

//剛開始宣告變數時每個變數的字串長度length都為0

//這裡以長度為10的陣列為例,陣列長度是1000

//對第0個到第9個結構體陣列的長度同時賦值為0

mystrmystr1[10]={

[0...9]={

.length=0,

intmain(){

inti;

for(i=0;i<10;i++){

printf("%d\n",mystr1[i].length);

return0;

2樓:

給出一下**,其中使用strcpy函式,標頭檔案為#include。

其用法為strcpy(字元陣列,需要拷貝的字串);

#include

#include

using namespace std;

struct stu

st[10];

int main()

3樓:匿名使用者

strcpy(stu[0].name,"aa");

c語言結構體中的一個char陣列怎麼賦值?

4樓:

常用兩種措施:

在宣告結構體變數時初始化,如——

//#include "stdafx.h"//if the vc++6.0, with this line.

#include "stdio.h"

struct stu;

int main(void);//這樣初始化printf("%d %s\n",s.x,s.name);

return 0;

}向陣列裡直接拷貝字串,如——

//#include "stdafx.h"//if the vc++6.0, with this line.

#include "stdio.h"

#include "string.h"

struct stu;

int main(void)

5樓:凌亂心扉

(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";

注意:此時陣列c的長度不是9,而是10。因為字串常量的最後由系統加上一個'\0'。上面的初始化與下面的初始化等價。

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

6樓:禮浦業雲韶

好吧,比如:

struct

emu=

那麼對char

ch賦值可以

for(j=0;j<=49;j++)

emu.ch[j]=j;

或者一個字元一個字元的賦值,比如emu.ch[0]='a';

對字串的賦值不能直接等於,要用函式strcpy,

7樓:匿名使用者

st.name="123"; 非法,常量字串不能直接賦值給字元陣列,因為st.name 地址是確定的,不能再改了。

char name[10]="123";可以的,定義時,進行初始化字元陣列。

8樓:匿名使用者

可以用string.h,標頭檔案裡面的strcpy()函式,拷貝

c語言結構體中的陣列怎麼賦值,C語言,結構體中的陣列怎麼賦值,?

念憶 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...

c語言怎麼引用結構體的下成員,c語言怎麼引用結構體的下乙個成員?

羿愷熊珠佩 雖然理論上可以這麼做,但是我想不出有什麼必要,非得把乙個指向結構體成員的指標指向乙個陣列,從邏輯上來說完全沒有道理。 直接成員名稱啊。struct tagstudent typedef struct tagstudent student student p p age 16 如果用p指向...

易語言陣列成員引用下標超出定義範圍

的放鬆放鬆 你判斷陣列有多少就有多少 版本 2 支援庫 regex 搜尋結果 正則1.搜尋全部 內容框1.內容 計次迴圈首 取陣列成員數 搜尋結果 f 內容框02.加入文字 搜尋結果 f 取匹配文字 內容框1.內容,換行符 計次迴圈尾 錯誤原因 你的 大體 內容 這個位元組集估計是空的 沒有獲取到 ...