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

Dae*_*eto 2 c regex scanf

我无法想出一个表达式,它会在最后一次斜杠后让我获得字符串的一部分.

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

如何让sscanf只存储最后一次斜线后写的内容?(本例中为"03.file")?斜杠的数量不固定.

我知道如果我写的话

char string [100];

sscanf(argv[1], "HIsomething:%99[^\n]", string); 
Run Code Online (Sandbox Code Playgroud)

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

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

Att*_*tie 6

不要使用sscanf(),使用strrchr(3)

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

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

注:所产生的价值str将是要么NULL或将指向您的argv[1]字符串.此时,如果你真的需要一个副本(也许是要修改),你可以使用strdup(3)