c語言結構體中的一個char陣列怎麼賦值?
阿新 • • 發佈:2022-03-04
目錄
前景提示
- 定義一個結構體,結構體中有兩個變數,其中一個是char型別的陣列,那麼,怎麼向這個陣列中插入資料,列印資料呢?
typedef struct SequenceList {
// 陣列的元素
char element[20];
// 陣列的長度
int length;
};
- 定義一個結構體,結構體中有兩個變數,其中一個是char型別的陣列指標,那麼,怎麼向這個陣列中插入資料,列印資料呢?
// 定義順序表結構體 typedef struct SequenceList { char *elment; int length; };
這裡的結構體處理的步驟
- 結構體初始化
- 結構體內資料賦值
- 結構體內輸出資料
本著上述的原則,先對第一種型別進行操作
一.char陣列型別的處理
- 1.結構體初始化
SequenceList L;
L.element = (char*)malloc(sizeof(char)*10);
L.length = 10
- 2.結構體內資料賦值(簡單法)
L.elment[0] = 1;
L.elment[1] = 2;
L.elment[2] = 3;
L.elment[3] = 4;
L.elment[4] = 5;
- for迴圈
for (int i = 0; i < 10; i++) { L.elment[i] = i+1; }
- 3.結構體內輸出資料
for (int i = 0; i < 10; i++)
{
//不會列印空值
if (L.elment[i]>0) {
printf("element[%d] = %d\n",i, L.elment[i]);
}
}
二.char陣列指標型別的處理
- 1.結構體初始化
//結構體初始化
MyList L;
L.length = LENGTH;
L.elment = (char*)malloc(L.length * sizeof(char));
- 2.結構體內資料賦值
//結構體賦值 for (int i = 0; i < LENGTH; i++) { *(L.elment + i) = 'A' + i; }
- 3.結構體內輸出資料
//列印結構體中的值
for (int i = 0; i < LENGTH; i++)
{
if (*(L.elment + i) > 0) {
printf("elment[%d] = %c\n", i, *(L.elment + i));
}
}
三.全部程式碼
1. char陣列
// 010.順序表_004.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。
//
#include <iostream>
#define MAXSIZE 10
typedef struct SequenceList {
// 陣列的元素
char element[MAXSIZE];
// 陣列的長度
int length;
};
int main()
{
// 1.初始化結構體
SequenceList *L;
L = (SequenceList*)malloc(sizeof(char)*MAXSIZE);
L->length = MAXSIZE;
// 2.存入結構體內值
for (int i = 0; i < MAXSIZE; i++)
{
L->element[i] = 'a' + i;
}
// 3.列印結構體內的值
for (int i = 0; i < MAXSIZE; i++)
{
if (*(L->element + i) > 0) {
printf("elment[%d] = %c\n", i, *(L->element + i));
}
}
}
2. char陣列指標
// 011.順序表_005.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。
//
#include <iostream>
#define MAXSIZE 10
typedef struct SequenceList {
// 陣列的元素
char *element;
// 陣列的長度
int length;
};
int main()
{
// 1.結構體初始化
SequenceList L;
L.length = MAXSIZE;
L.element = (char*)malloc(L.length * sizeof(MAXSIZE));
// 2.結構體內賦值
for (int i = 0; i < MAXSIZE; i++)
{
*(L.element + i) = 'a' + i;
}
// 3.列印結構體中的值
for (int i = 0; i < MAXSIZE; i++)
{
if (*(L.element + i) > 0) {
printf("elment[%d] = %c\n", i, *(L.element + i));
}
}
}
結語
- 這就是最近遇到的問題,這個問題困擾了很久,相信許多的初學者也遇到了這樣的問題,但是,網上的描述根本不怎麼好用,所以,希望本博主遇到的這個問題能幫助到你,喜歡的話,請關注,點贊,收藏.