我是C语言的新手,需要解析作为函数指针传递给函数的字符串“ var1 = bob&var2 = j”。我只想返回一个字符数组,例如[“ bob”,“ smith”]。
我在使用C语法时遇到了麻烦,并且无法成功遍历输入并无法通过解析提取出“ bob”和“ smith”。我一直在尝试弄乱strtok(),但是没有成功。
如果有人可以在这里帮助我,将不胜感激。
谢谢。
答案 0 :(得分:0)
strtok将不起作用,因为定界符正在更改(&var2 =,&var3 =)。
打印名称的基本程序很简单。
int main() {
char* str = "var1=bob&var2=smith";
// iterate all characters
for (int i = 0; i < str[i] != '\0'; i++) {
// if equal is found, you have your word
if (str[i] == '=') {
// keep iterating the characters upto & or \0
for (int j = i+1; str[j] != '\0' && str[j] != '&'; j++) {
printf("%c", str[j]);
}
printf("\n");
}
}
return 0;
}
您将需要创建一个 char *数组来存储这些名称。
答案 1 :(得分:0)
我将通过首先将输入字符串拆分为与号(“&”)上的令牌,然后将每个单独的令牌拆分为等号(“ =”)来处理此问题。 我主要是在C#中工作,这很简单:
string[] tokens = ("var1=bob&var2=smith").Split('&');
foreach (string s in tokens)
{
string[] parts = s.Split('=');
Console.Write(parts[0] + " = " + parts[1]);
}