我有以下代码:
#include <stdio.h>
#include <string.h>
#define MAX 419430400
#define CHR 50
#define INT 2000
FILE *doc;
char *path;
int BITE, LOOP;
int DOCUMENT[MAX];
int LENGTH = 0;
struct XmlNode {
char Tags[CHR];
char InnerText[INT];
char Atributes[CHR];
};
typedef XmlNode;
void LoadXml (char _path[200]) {
LOOP = 0;
path = _path;
doc = fopen(path,"r+");
do {
BITE = fgetc(doc);
DOCUMENT[LOOP] = BITE;
LOOP++;
} while(!feof(doc));
LENGTH = LOOP - 1;
}
void CloseXml (char _path[200]) {
path = NULL;
fclose(doc);
}
void SaveXml (char _path[200]) {
LOOP = 0;
FILE *save = fopen(_path,"w+");
for (LOOP = 0; LOOP < LENGTH; LOOP++) {
fprintf(save,"%c",(char)DOCUMENT[LOOP]);
}
fclose(save);
}
void PrintXml () {
LOOP = 0;
for (LOOP = 0; LOOP < LENGTH; LOOP++) {
printf("%c",(char)DOCUMENT[LOOP]);
}
}
void AppendChild(XmlNode _node, XmlNode _child)
{
char _tagBeggin[CHR+2], _tagEnd[CHR+3];
_tagBeggin[0] = '<';
_tagEnd[0] = '<';
_tagEnd[1] = '/';
for (LOOP = 0; LOOP < strlen(_child->InnerText); LOOP++){
}
}
错误出现在 AppendChild 过程中,或者每当我尝试访问像这样的值时:_child.InnerText,同样的错误。
Error: request for member 'InnerText' in something not a structure or union.
该程序作为家庭作业。想法是为我自己制作一个使用 xml 文件的程序,不使用任何库。我决定做我的。这就是我所做的。
AppendChild 函数应该包含一个现有的 XmlNode 到一个新的 XmlNode。
感谢您的帮助。 :)
最佳答案
typedef XmlNode;
应该是
typedef struct XmlNode XmlNode;
typedef XmlNode *XmlNodePtr;
发送给函数时始终使用指向结构的指针,因此将函数修改为,
void AppendChild(XmlNodePtr _node, XmlNodePtr _child)
关于c - 请求不是结构或 union 的成员?开发C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427605/