BUG關於結構體中聯合體陣列迴圈遍歷的問題

2021-10-20 17:44:49 字數 2785 閱讀 3565

除錯程式:設有乙個教師與學生通用的**,教師的資料有姓名、年齡、職業、教研室四項,學生有姓名、年齡、專業、班級四項,程式設計輸入人員的資料,再以**輸出。

#include

#define n 10

struct student

depa;

} stu[n]

;int

main()

printf

("name age job class / office\n");

for(i =

0; i < n; i++

)}

請輸入人員數(

<10)

:2請輸入第1人員的資訊:(name age job class/office)

zhan,

24,s

456請輸入第2人員的資訊:(name age job class/office)

zhan,

26,s

987name age job class / office

zhan,

24,s 115

456zhan,

26,s 115

987

#include

#define n 10

struct student

depa;

} stu[n]

;int

main()

else

}printf

("name age job class / office\n");

for(i =

0; i < n; i++

)}

請輸入人員數(

<10)

:2輸入的人數為:2

請輸入第1人員的資訊:(name age job class/office)

wang,

25,t

wang,

25,t,

116,

請輸出職位為t的office

555555

請輸入第2人員的資訊:(name age job class/office)

zhan,

24,s

zhan,

24,s,

115,

請輸出職位為t的office

1704

name age job class / office

wang,

25,t 116

555555

zhan,

24,s 115

1704

scanf

("%s,%d,%c"

,&stu[i]

.name,

&stu[i]

.age,

&stu[i]

.job)

;

請輸入人員數(

<10)

:2 輸入的人數為:2

請輸入第1人員的資訊:(name age job class/office)

zhan 21 s

輸出輸入的內容:zhan 21 s

請輸出職位為s的class

789請輸入第2人員的資訊:(name age job class/office)

wang 25 s

輸出輸入的內容:wang 25 s

請輸出職位為s的class

666name age job class / office

zhan 21 s 4229520

wang 25 s 4229556

第一種結果是在scanf裡%s%d中間加空格,出現錯誤,原因是當兩個輸入的職業都是學生時stu[i].depa.class是乙個int陣列,int陣列需要遍歷輸出,更改為stu[i].depa.class[i],使用的編譯器是vscode,外掛程式c/c++。

scanf

("%s %d %c"

,&stu[i]

.name,

&stu[i]

.age,

&stu[i]

.job)

;

#include

#define n 10

struct student

depa;

} stu[n]

;int

main

(void

)else

}printf

("name age job class / office\n");

for(i =

0; i < n; i++

)}

輸入的人數為:2

請輸入第1人員的資訊:(name age job class/office)

zhan 18 s

輸出輸入的內容:zhan,

18,s

請輸出職位為s的class

456請輸入第2人員的資訊:(name age job class/office)

wang 25 s

輸出輸入的內容:wang,

25,s

請輸出職位為s的class

987name age job class / office

zhan 18 s 456

wang 25 s 987

結構體聯合體

在c中,結構也是一種資料型別,可以使用結構變數,因此,象其它型別的變數一樣,在使用結構變數時要先對其定義。定義結構變數的一般格式為 struct 結構名 結構變數 結構名是結構的識別符號不是變數名。型別為第二節中所講述的五種資料型別 整型 浮點型 字元型 指標型和無值型 構成結構的每乙個型別變數稱為...

結構體 聯合體 列舉

1 結構體struct 結構體的作用 在網路協議 通訊控制 嵌入式系統的c c 程式設計中,我們要傳送的不是簡單的位元組流 char型陣列 二是多種資料組合起來的乙個整體,其表現形式是乙個結構體。使用struct的注意事項 1 下面看乙個題目 結果 6 12 這裡涉及到結構體的記憶體對齊方式。1 關...

結構體 聯合體 列舉

結構體 1.宣告乙個結構體型別的一般形式為 struct 結構體名 成員表列 如 struct student 表示可選項 注 宣告不是定義,故不可對成員列表中的成員進行初始化。定義別名 方法一 如 struct 結構體名 typedef struct 結構體名 別名 方法二 如 typedef s...