C 拆分/解析并从字符数组中获取值
我想用C编写一个函数,通过它可以从char数组中获取标记的值:: 例如:C 拆分/解析并从字符数组中获取值,c,parsing,split,C,Parsing,Split,我想用C编写一个函数,通过它可以从char数组中获取标记的值:: 例如: char a[]="name=RRR&school=AAA&roll=111&address=SSS"; 我想写一个函数-如果我把name作为函数的参数,那么函数将返回RRR-如果我把school作为函数的参数,那么函数将返回AAA 我用Java做的 public String getTagValue(String toSplit, String tag) { String Com
char a[]="name=RRR&school=AAA&roll=111&address=SSS";
我想写一个函数-如果我把name作为函数的参数,那么函数将返回RRR-如果我把school作为函数的参数,那么函数将返回AAA
我用Java做的
public String getTagValue(String toSplit, String tag)
{
String CommandTypeValue="";
String[] FirstSplit;
String[] SecondSplit;
String delims = "&";
FirstSplit = toSplit.split(delims);
for(int i=0; i<FirstSplit.length; i++ )
{
delims = "=";
SecondSplit = FirstSplit[i].split(delims);
if(SecondSplit[0].equals(tag))
return SecondSplit[1];
//System.out.println(SecondSplit[0] +" "+ SecondSplit[1]);
}
return CommandTypeValue;
}
怎么做C??任何简易库或函数???使用标准库的strtok系列: 是您所寻找的 例如:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* getTagValue(char* a_tag_list, char* a_tag)
{
/* 'strtok' modifies the string. */
char* tag_list_copy = malloc(strlen(a_tag_list) + 1);
char* result = 0;
char* s;
strcpy(tag_list_copy, a_tag_list);
s = strtok(tag_list_copy, "&");
while (s)
{
char* equals_sign = strchr(s, '=');
if (equals_sign)
{
*equals_sign = 0;
if (0 == strcmp(s, a_tag))
{
equals_sign++;
result = malloc(strlen(equals_sign) + 1);
strcpy(result, equals_sign);
}
}
s = strtok(0, "&");
}
free(tag_list_copy);
return result;
}
int main()
{
char a[]="name=RRR&school=AAA&roll=111&address=SSS";
char* name = getTagValue(a, "name");
char* school = getTagValue(a, "school");
char* roll = getTagValue(a, "roll");
char* address = getTagValue(a, "address");
char* bad = getTagValue(a, "bad");
if (name) printf("%s\n", name);
if (school) printf("%s\n", school);
if (roll) printf("%s\n", roll);
if (address) printf("%s\n", address);
if (bad) printf("%s\n", bad);
free(name);
free(school);
free(roll);
free(address);
free(bad);
return 0;
}
检查该函数。您可以使用它在上拆分toSplit字符串,并在每次迭代中在=上再次拆分,以查看标记是否与您想要的匹配
char * p[10], temp;
temp = strtok(str,"&");
int i=0;
while (temp != NULL)
{
p[i++] = temp;
temp = strtok (NULL, "&");
}
然后,可以使用=作为分隔符分别为每个参数使用strtok