寻求调试帮助,为什么这个标记器没有正确复制数组?

时间:2016-10-25 08:45:11

标签: c tokenize

在这个赋值中,我必须在c中创建一个tokeniser函数,它在删除空格的同时将字符串的内容复制到另一个字符串中。它返回应该查找下一个标记的位置。

令牌是一串字符或一个操作符char。

在我的尝试中,检测并绕过空格的计数器以某种方式停止将内容复制到第一个标记之后的结果字符串中。这是我的代码:

$ rvm -v 
# rvm 1.19.1 (stable)
$ rvm osx-ssl-certs status all
# Certificates details
$ rvm osx-ssl-certs update all
# update certificates

1 个答案:

答案 0 :(得分:1)

您的tokenize功能可以是:

int tokenise_ops(char str[], int start, char result[], char operators[])
{
    int i = start;
    int j = 0;

    while ((str[i]==' ') && (str[i]!='\0'))
    {
        i++;
    }


    while(str[i]!='\0')
    {
        if(str[i]==' ' || checkOperators(str,operators,i)==1)
        {
            printf("Test2: %c\n", str[i]);
            result[j] = '\0';

            return i;
        }
        else
        {
            printf("Test: %c\n", str[i]);
            result[j] = str[i];
            i++;
            j++;
        }
    }

    result[j] = '\0';

    return -1;
}
  1. jresult索引,因此必须从0每次调用开始
  2. while循环应该存储字符,如果它们不匹配标记,并且在找到标记时null终止结果。
  3. 解析整个result时,
  4. str必须以空值终止。