我正在尝试在 : :amf aa :amfe 之类的东西之间进行解析。但是添加了一些额外的值到字符串中。在代码中,一切都更加具体
char *aparse(char *str,char *a1,char *a2)
{
char *aa;
char *cr = strstr(str,a1);
char *sr = strstr(str,a2);
int first = cr-str;
int second = sr-str;
int ftag = first+5;
int stag = second-1;
long wtag = stag-ftag;
int i=0;
aa = malloc(wtag);
for (i=0; i<wtag; i++)
{
aa[i] = str[ftag];
ftag++;
}
printf ("%s\n",aa);
return aa;
}
这是我的解析器代码。
char *aa = ":amf gosadaogle :amfe :fil doc :file";
char *music = aparse(aa,":amf",":amfe");
char *o = aparse(aa,":fil",":file");
这就是我调用函数的方式。但是其中一个字符串带有来自我不知道的地方的额外字符。它就像 o = doc 但音乐 = gosadaogle 。我制作了一个数组并且额外的值消失了。但是我想做malloc。我该如何解决
对不起,我想我不能清楚地告诉我我的问题
这将解释
我试图提取 :amf 和 :amfe 之间的值。而我用 aparse 提取一些添加到音乐或 o 变量中的额外字符