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



我需要从字符串中获取最后一个字符。假设字符串如下所示:

blue;5

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

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

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

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

做成

 Position = strlen(Input) - 1 //correct
 strcpy(value, &Input[Position]);//ok

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

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

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

@Iharob已经发布了一些代码,允许您将最后一个字符作为字符访问。但是如果你想要一个字符串,你可以这样做,因为它在最后,所以 NUL 终止:

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

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

你比

你想象的更接近解决方案:

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

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

最新更新