如何将字符串类型转换为具有不同大小的 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/