关于结构体数组的赋值问题
最近在练习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);
}
关于结构体数组的赋值问题相关推荐
- c语言 结构体数组的赋值
c语言 结构体数组的赋值 //**创建结构体** #include<stdio.h> struct Class{int id;char name[10]; }; //******结构体数组 ...
- C++ 结构体指针与结构体数组的赋值
知识点小结: 当需要批量赋值结构体的时候,可以使用结构体数组.对于结构体指针,可以用来指向结构体数组的首地址,但是不能按照结构体数组的赋值方式进行赋值,感觉是无法预知后面批量赋值的大小.具体情况见以下 ...
- c语言如何为结构数组赋值,C语言结构体数组同时赋值的另类用法
说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子: #include struct student { int a; int b ; int c ; }; stru ...
- 结构体数组的赋值方法(常用的三种,包含字符串)
目录 一.按照成员变量进行赋值(麻烦,好理解,字符串赋值需要strcpy) 二.对数组整体进行赋值.(一次性需要把所有的都添加进去,不需要strcpy) (1) 在声明数组的时候,进行赋值 (2)对有 ...
- 向结构体或结构体数组中赋值
一:结构体 方式1 #include<bits/stdc++.h> using namespace std;struct Node{string name;int grade; };int ...
- C++遍历结构体数组并赋值
main.cpp #include <iostream>using namespace std;#include "student.h"int main() {Stud ...
- Matlab 结构体数组批量赋值
老实说,不是很懂,但确实可以用 代码 clear;clc; Cncs=struct('past_time', {1,1,1,1,1,1,1,1}); [Cncs.past_time] A = mat2 ...
- C语言结构体数组定义及赋值
做了一个小的例子: #include <stdio.h> int main() {struct Link{int LinkId;int LinkLen;int NxtLnkId;}Lnk[ ...
- matlab多维数组、结构体数组
1.多维数组 第三维称为页,需要注意的是每一页存放的二维数组维度要一致,也就是行列数要一致... 1 2 3 4 5 6 7 a=[1,2; 3,4]; b=[2,2; 5,6]; A ...
最新文章
- Commonjs规范
- 紫书 习题 10-44 UVa 11246 ( 容斥原理)
- icem密度盒怎么设置_icem一些总结精编版
- mysql数据迁移数据一致性检教6_如何在数据库迁移中保证数据一致性?
- 【渝粤题库】广东开放大学 标准的研制与编制 形成性考核
- html文件vbs病毒,一段病毒常用的VBS代码
- ASP.NET之MVC 微信公众号授权给第三方平台的技术实现流程一(获取第三方平台access_token)...
- 机器学习:监督学习、无监督学习、强化学习
- linux安装雅黑字体,在CentOS系统中安装雅黑字体
- 【公告】4月15日CSDN下载频道和视频维护公告
- linux - ab测试工具
- CSS颜色代码 颜色值 颜色名字大全
- 38译码器和416译码器
- C++中set用法详解
- csdn网友提出关于expdp exclude及impdp问题解答
- HTML渐变背景不重复,在身体上设置的CSS3渐变背景不会拉伸,而是重复?
- 深度解析上海互联网产业为何沉沦
- 坚持不是苦差事,而是一种享受
- 你真的了解牛顿第一定律吗
- 【解读】山香科技:互联网从软件革命到移动革命