【发布时间】:2020-12-19 01:01:50
【问题描述】:
以下是我所面临问题的快速重现:
#include <iostream>
#include <cstring>
int main()
{
char path[100] = "home/user/cvs/test/VSCode/Test.dll";
char *pos = strrchr(path, '/');
if (pos != NULL)
{
*pos = '\0';
}
printf("%s", path);
}
我在路径名中找到最后一个“/”,需要打印最后一个“/”之后的所有内容,所以输出需要是:
Test.dll
但是,使用我当前的代码,输出是:
home/user/cvs/test/VSCode
基本上我的代码打印最后一个“/”之前的所有内容,但我需要打印最后一个“/”之后的所有内容。
【问题讨论】:
-
您可以使用
printf("%s", pos + 1);(并省略*pos = '\0')。另外,我会做char path[] = "home/user/cvs/test/VSCode/Test.dll";(省略数组大小,因为编译器会推断它)。 -
\0代表一个字符串的结尾,这就是为什么你要更新到最后一个 / 因为你正在更新它到 \0