在两个不同的分隔符之间获取令牌

时间:2017-02-05 17:13:00

标签: c

我需要从字符串中获取最后一个字符。假设字符串看起来像这样:

blue;5

我以为我可以使用strlen,然后减去1来得到5.我已经尝试了一些不同的方法,但没有一个工作。这就是我认为应该看起来或做的方式,但我知道它不起作用。有什么建议?这是我的代码伪代码。我知道它不是因为各种原因而起作用的,而是我想到的那种流程。

len = strlen(Input);
Position = Input[len - 1];
strcpy(value, Input[Position]);

4 个答案:

答案 0 :(得分:0)

如果你真的想要最后一个角色那么你可以使用strlen()但不是那样的,而不是像这样

char string[] = "blue;5";
int position = strlen(string) - 1;
char last = string[position];

printf("%c\n", last);

请注意,last不是字符串,而是单个字符,而后者又是string中最后一个字符的ascii值,您可以使用{{"%c"打印它的表示形式1}} printf()说明符。

答案 1 :(得分:0)

 len = strlen(Input); //ok

这里你出错了。将字符放入整数是不正确的。你需要这个。

 Position = Input[len - 1]; //incorrect

将其作为

 Position = strlen(Input) - 1 //correct

 strcpy(value, &Input[Position]);//ok

答案 2 :(得分:0)

@Iharob已经发布了一些代码,可以让你以字符的形式访问最后一个字符。但是如果你想要一个字符串,你可以这样做,因为它在最后,因此NUL终止:

const char * lastword = string + (strlen(string) - 1);
printf("%s", lastword);

请注意'%s' - lastword是"字符串",而不是字符。它只是一个字母长的字符串。

答案 3 :(得分:0)

你比解决方案更接近解决方案:

    len = strlen(Input);
    strcpy(value, &Input[len - 1]);  // copy last character

strcpy需要一个指向最后一个字符的指针。