C中的sscanf表达式 - 如何在最后一次斜线后得到所有内容?

时间:2017-03-14 18:09:12

标签: c regex scanf

我在遇到一个表达式时遇到问题,这个表达式会在最后一次斜杠之后让我成为字符串的一部分。

我们说我有argv[1] = "HIsomething:01/02/03.file";

如何让sscanf仅存储最后一次斜线后写的内容? (" 03.file"在这个例子中)?斜杠的数量不固定。

我知道如果我要写

char string [100];

sscanf(argv[1], "HIsomething:%99[^\n]", string); 

我可能会得到" 01/02 / 03.file"存储在字符串中。

我不能手动输入它,因为参数可能不同,我需要一个通用的解决方案,只需在最后一次斜线后获取所有内容。

1 个答案:

答案 0 :(得分:6)

请勿使用sscanf(),请使用strrchr(3)

  

strrchr()函数返回指向字符串s中最后一次出现的字符c的指针。

char *str;
str = strrchr(argv[1], '/');
if (str != NULL) {
    str++; /* step over the slash */
}

注意:str的结果值将为NULL或将指向您的argv[1]字符串。此时,如果您确实需要副本(可能需要修改),则可以使用strdup(3)