首頁 > 軟體

詳解C語言結構體中的char陣列如何賦值

2022-03-05 13:00:47

前景提示

定義一個結構體,結構體中有兩個變數,其中一個是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] = %dn",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] = %cn", 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] = %cn", 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] = %cn", i, *(L.element + i));
		}
 
	}
}

結語這就是最近遇到的問題,這個問題困擾了很久,相信許多的初學者也遇到了這樣的問題,但是,網上的描述根本不怎麼好用,所以,希望本博主遇到的這個問題能幫助到你

總結

到此這篇關於C語言結構體中的char陣列如何賦值的文章就介紹到這了,更多相關C語言結構體中char陣列賦值內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com