我尝试使用以下代码对字符串进行标记:
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来进行标记化测试。代码中有一个错误但我无法修复它。
编辑:我已经修复了上面的代码,我希望这可以是一个正确的代码,如果不正确,请提及。答案 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;
}
}