C语言:动态分配结构体数组存取整型和二进制数据

问题

5 00 01

6 01 11

上面是我从键盘输入的两行数据

例如:5 00 01

5是整型 00和01是两个二进制字符

三个数据用空格隔开请问我要如何定义结构体数组来存取这一行数据?

定义结构体

c 复制代码
struct Data {
    int integerData;
    char binaryData1[2];
    char binaryData2[2];
};

创建结构体数组

c 复制代码
struct Data dataArray[2]; // 为两行数据创建数组

读取键盘输入

c 复制代码
for (int i = 0; i < 2; i++) {
    scanf("%d %s %s", &dataArray[i].integerData, dataArray[i].binaryData1, dataArray[i].binaryData2);
}

存取

c 复制代码
for (int i = 0; i < 2; i++) {
    printf("Row %d: Integer=%d, Binary1=%s, Binary2=%s\n", i, dataArray[i].integerData, dataArray[i].binaryData1, dataArray[i].binaryData2);
}

思考1

二进制字符00存到字符数组里面的时候不用考虑\0吗?

将二进制字符"00"存储到字符数组中时,通常不需要添加\0,因为\0通常表示字符串的结束。二进制字符"00"被存储为两个连续的字节,它们可以在字符数组中表示为两个字符,而不需要额外的字符串终止字符。

\0是C语言中的字符串终止字符,用于表示字符串的结束。通常,在字符数组中存储字符串时,会在最后一个字符后面自动添加\0来标识字符串的结束。但是,对于二进制数据,我们可以将它们存储在字符数组中,而无需\0,因为这些数据不一定是以字符串的形式存储的。

如果我们要处理二进制数据,通常会使用char数组或unsigned char数组,而不将其解释为以\0结尾的字符串。只有当我们需要将这些数据作为字符串处理时,才需要添加\0以标识结束。

所以,二进制字符"00"可以存储在char数组中,而不需要额外的\0字符。但是,如果我们打算将这些数据用作字符串,我们可能需要添加\0以使其成为有效的C字符串。

相关推荐
数据小爬虫@6 分钟前
如何高效利用Python爬虫按关键字搜索苏宁商品
开发语言·爬虫·python
ZJ_.8 分钟前
WPSJS:让 WPS 办公与 JavaScript 完美联动
开发语言·前端·javascript·vscode·ecmascript·wps
Narutolxy13 分钟前
深入探讨 Go 中的高级表单验证与翻译:Gin 与 Validator 的实践之道20241223
开发语言·golang·gin
Hello.Reader21 分钟前
全面解析 Golang Gin 框架
开发语言·golang·gin
禁默32 分钟前
深入浅出:AWT的基本组件及其应用
java·开发语言·界面编程
Code哈哈笑41 分钟前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
程序猿进阶44 分钟前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
qq_433618441 小时前
shell 编程(二)
开发语言·bash·shell
charlie1145141911 小时前
C++ STL CookBook
开发语言·c++·stl·c++20
袁袁袁袁满1 小时前
100天精通Python(爬虫篇)——第113天:‌爬虫基础模块之urllib详细教程大全
开发语言·爬虫·python·网络爬虫·爬虫实战·urllib·urllib模块教程