【发布时间】:2015-01-27 17:18:12
【问题描述】:
我觉得这应该是一件容易的事,但我不断收到分段错误错误。我正在尝试查找最后一次出现的字符“/”,然后在该字符之后打印一个。
这主要是为了打印出一个文件,这样:
directory1/directory2/hello.txt
应该像这样打印出来:
hello.txt
我正在尝试使用 strrchr 来执行此操作,但由于它返回一个字符的最后一次出现,它会打印出以下内容:
/hello.txt
我以为我可以将字符指针前移一个斜线,然后打印它,但是这样做会出现段错误:
void print_path(char *dir_name)
{
char *c_ptr = strrchr(dir_name, '/');
*c_ptr = *c_ptr + 1;
printf("%s\n", c_ptr);
}
我也环顾四周,尝试使用一种方法,将c_ptr 复制到临时变量,将一个添加到新的临时字符串,然后在末尾添加一个空字符,但这也导致了错误。
我该怎么办?
【问题讨论】:
-
代码可以使用函数'basename'来获取指向整个字符串文件名部分的指针。
-
OT:你的名字很有误导性。该函数暗示打印路径,但它实际上打印文件名。该参数暗示了一个目录名称,但显然它需要传入一个完整的路径。