【发布时间】:2012-02-25 09:38:34
【问题描述】:
我正在尝试将 char* 拆分为 C 中的 char* 数组。 我习惯用 Java / PHP OO 编程。我知道用这些语言可以做到这一点的几种简单方法,但在 C 中......我完全迷失了。我经常有几个小时的段错误)
我正在使用 TinyXML 并从 XML 文件中获取信息。
这是我们找到数组的结构。
const int MAX_GATES = 64;
typedef struct {
char *name;
char *firstname;
char *date;
char *id;
char *gates[MAX_GATES];
} UserInfos;
这是我填充这个结构的地方:
UserInfos * infos = (UserInfos*)malloc(1024);
infos->firstname = (char*)malloc(256);
infos->name = (char*)malloc(128);
infos->id = (char*)malloc(128);
infos->date = (char*)malloc(128);
sprintf(infos->firstname, "%s", card->FirstChild("firstname")->FirstChild()->Value());
sprintf(infos->name, "%s", card->FirstChild("name")->FirstChild()->Value());
sprintf(infos->date, "%s", card->FirstChild("date")->FirstChild()->Value());
sprintf(infos->id, "%s", card->FirstChild("filename")->FirstChild()->Value());
////////////////////////
// Gates
char * gates = (char*) card->FirstChild("gates")->FirstChild()->Value();
//////////////////////////
唯一的问题是在“门”上。 输入表单 XML 看起来像“gate1/gate2/gate3”或有时只是空白。
我希望 gate1 在 infos->gates[0] 中;等等。 我希望能够在之后列出门阵列..
我尝试时总是遇到段错误。 顺便说一句,我现在真的不知道如何初始化这个指针数组。我总是将所有 gates[i] 初始化为 NULL 但我这样做时似乎有段错误 for(int i=0;i
谢谢大家。
当我只有指针时没关系,但当 String(char*) / Arrays / Pointers 混合时.. 我无法管理 =P
我也看到我们可以使用类似的东西 int *myArray = calloc(NbOfRows, NbOfRows*sizeof(int)); 为什么我们要声明这样的数组..? x)
谢谢!
【问题讨论】:
-
“我习惯用 Java / PHP OO 编程”。那你可能会想坚持下去。 ;)
-
1) 拿起一本关于 C 的书; 2)请不要投
malloc()的结果。 (或者根本不施放,句号,除非你真的明白为什么。)