需要帮助来解析C

时间:2020-10-31 21:11:59

标签: c string parsing

我是C语言的新手,需要解析作为函数指针传递给函数的字符串“ var1 = bob&var2 = j”。我只想返回一个字符数组,例如[“ bob”,“ smith”]。

我在使用C语法时遇到了麻烦,并且无法成功遍历输入并无法通过解析提取出“ bob”和“ smith”。我一直在尝试弄乱strtok(),但是没有成功。

如果有人可以在这里帮助我,将不胜感激。

谢谢。

2 个答案:

答案 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]);
}