最近在练习PAT的题目,有很多字符串数据需要使用二维字符串数组进行存储,处理起来并不是很方便,如果要存储的数据每一行都是规格化的,可以考虑使用一维的结构体数组来处理,以下为一维的结构体数组的使用总结:

考虑到很多题目每个测试用例里的数据数目并不是确定的,换句话说要使用变长一维结构体数组,故使用malloc函数来动态申请内存空间:

1.首先/定义结构体:

typedef struct {

char id[20];

char name[10];

char gender[4];

} student;

2.在main函数中做声明:

int N;

scanf("%d",&N);//获得数组长度

student * students = (student *)malloc(N * sizeof(student));

//在支持C99标准的编译器中,可以直接使用以下方式进行声明:

//student students[N];

3.关于以为结构体数组的赋值:

(1)直接使用for循环进行结构体的赋值:

int i;

for(i = 0; i < N; i++)

{

//如果结构体里不是字符串,例如假设id为int型,则&students[i].id

scanf("%s %s %s", students[i].id,students[i].name,students[i].gender);

}

(2) 通过在赋值函数内创建新的结构体并返回赋值:

main()中:

int i ;

char id[20],name[10],gender[4];

for(i = 0; i < N; i++)

{

students[i] = getStruct( );

}

结构体赋值函数:

student getStruct(void)

{

student p;

scanf("%s",p.id);//因为是字符串,不用加取址符&,否则此处为&p.x

scanf("%s",p.name);

scanf("%s",p.gender);

return p;

}

(3) 通过指针赋值:

main()中:

int i ;

char id[20],name[10],gender[4];

for(i = 0; i < N; i++)

{

getStruct(&students[i]);

}

结构体赋值函数:

void getStruct(student * students)

{

scanf("%s",students->id);//因为是字符串,不用加取址符&,若是int,此处为&students->id

scanf("%s",students->name);

scanf("%s",students->gender);

}

关于结构体数组的赋值问题相关推荐

  1. c语言 结构体数组的赋值

    c语言 结构体数组的赋值 //**创建结构体** #include<stdio.h> struct Class{int id;char name[10]; }; //******结构体数组 ...

  2. C++ 结构体指针与结构体数组的赋值

    知识点小结: 当需要批量赋值结构体的时候,可以使用结构体数组.对于结构体指针,可以用来指向结构体数组的首地址,但是不能按照结构体数组的赋值方式进行赋值,感觉是无法预知后面批量赋值的大小.具体情况见以下 ...

  3. c语言如何为结构数组赋值,C语言结构体数组同时赋值的另类用法

    说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子: #include struct student { int a; int b ; int c ; }; stru ...

  4. 结构体数组的赋值方法(常用的三种,包含字符串)

    目录 一.按照成员变量进行赋值(麻烦,好理解,字符串赋值需要strcpy) 二.对数组整体进行赋值.(一次性需要把所有的都添加进去,不需要strcpy) (1) 在声明数组的时候,进行赋值 (2)对有 ...

  5. 向结构体或结构体数组中赋值

    一:结构体 方式1 #include<bits/stdc++.h> using namespace std;struct Node{string name;int grade; };int ...

  6. C++遍历结构体数组并赋值

    main.cpp #include <iostream>using namespace std;#include "student.h"int main() {Stud ...

  7. Matlab 结构体数组批量赋值

    老实说,不是很懂,但确实可以用 代码 clear;clc; Cncs=struct('past_time', {1,1,1,1,1,1,1,1}); [Cncs.past_time] A = mat2 ...

  8. C语言结构体数组定义及赋值

    做了一个小的例子: #include <stdio.h> int main() {struct Link{int LinkId;int LinkLen;int NxtLnkId;}Lnk[ ...

  9. matlab多维数组、结构体数组

    1.多维数组 第三维称为页,需要注意的是每一页存放的二维数组维度要一致,也就是行列数要一致... 1 2 3 4 5 6 7 a=[1,2;     3,4]; b=[2,2;     5,6]; A ...

最新文章

  1. Commonjs规范
  2. 紫书 习题 10-44 UVa 11246 ( 容斥原理)
  3. icem密度盒怎么设置_icem一些总结精编版
  4. mysql数据迁移数据一致性检教6_如何在数据库迁移中保证数据一致性?
  5. 【渝粤题库】广东开放大学 标准的研制与编制 形成性考核
  6. html文件vbs病毒,一段病毒常用的VBS代码
  7. ASP.NET之MVC 微信公众号授权给第三方平台的技术实现流程一(获取第三方平台access_token)...
  8. 机器学习:监督学习、无监督学习、强化学习
  9. linux安装雅黑字体,在CentOS系统中安装雅黑字体
  10. 【公告】4月15日CSDN下载频道和视频维护公告
  11. linux - ab测试工具
  12. CSS颜色代码 颜色值 颜色名字大全
  13. 38译码器和416译码器
  14. C++中set用法详解
  15. csdn网友提出关于expdp exclude及impdp问题解答
  16. HTML渐变背景不重复,在身体上设置的CSS3渐变背景不会拉伸,而是重复?
  17. 深度解析上海互联网产业为何沉沦
  18. 坚持不是苦差事,而是一种享受
  19. 你真的了解牛顿第一定律吗
  20. 【解读】山香科技:互联网从软件革命到移动革命

热门文章

  1. 点餐小程序有什么用,做个点餐小程序多少钱
  2. 陪学网产品经理线下活动圆满成功,我们相约下一次!
  3. 【Android】文字描边
  4. 飞行汽车-可行性方案分析设计与实现
  5. Material Design风格的水波涟漪效果(Ripple Effect)的实现
  6. 动手学深度学习之多层感知机
  7. 被讨厌的勇气(摘录)
  8. android游戏攻略,安卓手机游戏攻略
  9. echarts图表y坐标轴单位
  10. 在数组中查找指定元素 (10分) PTA (C语言)