gpt4 book ai didi

c - 如何将字符串类型转换为具有不同大小的 char 数组成员的结构?

转载 作者:行者123 更新时间:2023-11-30 14:25:46 24 4
gpt4 key购买 nike

如何将字符串类型转换为具有不同大小的 char 数组成员的结构?例如

typedef struct format{
char test1[12];
char test2[3];
char test3[3];
char test4[3];
char test5[9];
char test6[3];
char test7[3];
char test8[7];
char test9[24];
char test10[3];
char test11[24];
}format;

现在我将有一个字符串,它将与上述信息连接起来,我只想解析其中的相应信息并将其填充到相应的结构成员中。

最佳答案

你的理由是什么?您也许可以逃脱:

如果C:

// s is a null-terminated c string.
format* f = (format*)s;

这就是全部内容。

如果是 C++:

// std::string s; // assuming basic_string<char>
// do stuff with s
format* f = reinterpret_cast<format*>(s.c_str());

前提是该字符串位于范围内。这可能存在风险,具体取决于您的 STL 实现。

对于 C++ 和 C:如果您的字符串切片不是以零结尾并且您在格式的成员上调用标准 C 样式字符串函数,那么您还会面临读取超出每个字符串范围的风险结构体。

正如 undur_gongor 和 glglgl 所指出的,如果结构内的 char 数组的对齐和填充导致非紧密包装的结构(即由于对齐规则而存在额外的填充),则这可能不起作用。

正如 Steve 指出的,在大多数所有架构中,char 是 1 个字节,这意味着您应该是安全的。

关于c - 如何将字符串类型转换为具有不同大小的 char 数组成员的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9990683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com