写点什么

c 语言结构体中的一个 char 数组怎么赋值?

  • 2022 年 3 月 05 日
  • 本文字数:1449 字

    阅读完需:约 5 分钟

c语言结构体中的一个char数组怎么赋值?

[TOC]

前景提示

  • 定义一个结构体,结构体中有两个变量,其中一个是 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)); }
}}
复制代码


结语

  • 这就是最近遇到的问题,这个问题困扰了很久,相信许多的初学者也遇到了这样的问题,但是,网上的描述根本不怎么好用,所以,希望本博主遇到的这个问题能帮助到你,喜欢的话,请关注,点赞,收藏.

发布于: 刚刚阅读数: 3
用户头像

十年磨一剑,一剑破万法 2018.01.16 加入

JAVA开发五年,希望早日成就架构师

评论

发布
暂无评论
c语言结构体中的一个char数组怎么赋值?_c_北极的大企鹅_InfoQ写作平台