我在遇到一个表达式时遇到问题,这个表达式会在最后一次斜杠之后让我成为字符串的一部分。
我们说我有argv[1] = "HIsomething:01/02/03.file";
如何让sscanf仅存储最后一次斜线后写的内容? (" 03.file"在这个例子中)?斜杠的数量不固定。
我知道如果我要写
char string [100];
sscanf(argv[1], "HIsomething:%99[^\n]", string);
我可能会得到" 01/02 / 03.file"存储在字符串中。
我不能手动输入它,因为参数可能不同,我需要一个通用的解决方案,只需在最后一次斜线后获取所有内容。
答案 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)