在对字符串进行标记时修复错误

时间:2015-09-22 11:31:44

标签: c

我尝试使用以下代码对字符串进行标记:

char dpal_path[]="s/s/test";
char sep ='/';
int i= 0;
int j = 0;
size_t length;
const char *token;
while (dpal_path[i] != 0)
{   
    if (dpal_path[i] == sep)
    {
        token = &dpal_path[j];
        length = i-j;
        j=i+1;
        printf("%.*s\n", length, token);

    }
    i++;
}

if(i == strlen(dpal_path))
{
    token = &dpal_path[j];
    length = i-j;
}

printf("%.*s\n", length, token);

问题现在是字符串" test"我无法对其进行标记,我必须放在字符串的末尾" s / s / test /",我必须在最后放置一个separtor来进行标记化测试。代码中有一个错误但我无法修复它。

编辑:我已经修复了上面的代码,我希望这可以是一个正确的代码,如果不正确,请提及。

1 个答案:

答案 0 :(得分:-1)

const char *input = "a/b/zzz";
char sep = '/';
const char *b, *e;

for(b = e = input; ; e++)
{
    if(*e == sep || *e == 0)
    {
        if(e != b)
            use_token(b, e-b);  // start and length

        if(*e == 0)
            break;

        b = e + 1;
    }
}