在Linux中处理文件时,你需要对它们的路径进行操作。C语言的某些功能可以对文件路径进行操作;但是,就本文的范围而言,我们将详细讨论C语言的Basename功能的使用。
C语言中Basename函数的目的
在C语言中使用Basename函数的目的只是为了提取所提供路径的最后一个组成部分。例如,向Basename函数提供路径"/abc/def/ghi "将返回 "ghi "作为输出。
C语言中Basename函数的用法
为了清楚地了解Basename函数在C语言中的用法,你必须通过以下所有的例子。
例子 1:
在这个例子中,我们想提取一个Linux系统的三层路径的最后一个组件。为此,我们实现了下图所示的C程序。

为了方便地使用Basename函数,我们将 "libgen.h "头文件与常规的 "stdio.h "和 "stdlib.h "头文件放在一起。之后,在我们的 "main() "函数中,我们声明了一个字符类型的指针,并将我们想要提取的最后一个组件的三级路径分配给它。然后,我们声明了另一个字符类型的指针,并将其等同于Basename函数的值,我们将包含三层路径的指针分配给了它。最后,我们在终端机上打印了后一个变量的值,然后是 "返回0 "语句。
为了编译这段C代码,我们使用了以下命令。
$ gcc basename.c –o basename

然后,为了执行同样的代码,我们使用了下面的命令。
$ ./basename

我们所提供的三层路径的最后一个组成部分显示在下面的图片中。

例子 2:

为了方便地使用Basename函数,我们将 "libgen.h "头文件与常规的 "stdio.h "和 "stdlib.h "头文件放在一起。之后,我们在 "main() "函数中声明了一个字符类型的指针,并分配了我们想要提取的最后一个组件的两级路径。然后,我们声明了另一个字符类型的指针,并将其等同于Basename函数的值,我们已经将包含两级路径的指针分配给了该函数。最后,我们在终端机上打印了后一个变量的值,然后是 "返回0 "语句。
当我们以与第一个例子相同的方式编译和执行这段C代码时,我们得到了我们提供的两级路径的最后一个组成部分,如下图所示。

例子 3:
在这个例子中,我们想提取一个Linux系统的单级路径的最后一个组件。为此,我们实现了下图所示的C程序。

为了方便地使用Basename函数,我们将 "libgen.h "头文件与常规的 "stdio.h "和 "stdlib.h "头文件放在一起。之后,我们在 "main() "函数中声明了一个字符类型的指针,并指定了我们想要提取的最后一个组件的单级路径。然后,我们声明了另一个字符类型的指针,并将其等同于Basename函数的值,我们已经将包含单级路径的指针分配给了该函数。最后,我们在终端机上打印了后一个变量的值,然后是 "返回0 "语句。
当我们以与第一个例子相同的方式编译和执行这段C代码时,我们得到了我们提供的单级路径的最后一个组件,如下图所示。

例子 4:
在这个例子中,我们想看看Basename函数的输出,其中只包含一个"/"正斜杠的路径被分配给它。为此,我们实现了下图所示的C程序。

为了方便地使用Basename函数,我们将 "libgen.h "头文件与常规的 "stdio.h "和 "stdlib.h "头文件放在一起。之后,在我们的 "main() "函数中,我们声明了一个字符类型的指针,并给它分配了只包含"/"的路径。然后,我们声明了另一个字符类型的指针,并将其等同于Basename函数的值,我们已经将包含所需路径的指针分配给了该函数。最后,我们在终端机上打印了后一个变量的值,然后是 "返回0 "语句。
当我们以与第一个例子相同的方式编译和执行这段C代码时,我们得到了一个"/"作为输出,如下图所示。

例子5:
在这个例子中,我们想看看Basename函数的输出,其中只包含一个""空字符串的路径被分配给了它。为此,我们实现了下图所示的C程序。

为了方便地使用Basename函数,我们将 "libgen.h "头文件与常规的 "stdio.h "和 "stdlib.h "头文件放在一起。之后,我们在 "main() "函数中声明了一个字符类型的指针,并分配了只包含一个空字符串的路径。然后,我们声明了另一个字符类型的指针,并将其等同于Basename函数的值,我们将包含所需路径的指针分配给该函数。最后,我们在终端机上打印了后一个变量的值,然后是 "返回0 "语句。
当我们以与第一个例子相同的方式编译和执行这段C代码时,我们得到了一个空字符串作为输出,如下图所示。

例子 6:
这个例子与我们刚才的五个例子中的其他例子略有不同。在这个例子中,我们想提供在运行时发现的最后一个组件的路径。为此,我们实现了下图所示的C程序。

为了方便地使用Basename函数,我们将 "libgen.h "头文件与常规的 "stdio.h "和 "stdlib.h "头文件放在一起。之后,在我们的 "main() "函数中,我们有两个参数,"argc "和 "argv",用于接受命令行参数。然后,我们有一个 "for "循环,在 "argc "上迭代,用于读取命令行参数。最后,我们通过使用Basename函数和 "返回0 "语句,在终端上打印了所提供路径的最后一个组件的值。
为了执行这段C代码,我们必须提供路径和可执行文件的名称,如下图所示。

执行后,我们得到了我们提供的路径的最后一个组成部分,如下图所示。

总结
这篇文章旨在演示C语言编程中Basename函数的用法。为此,我们首先向你解释了使用这个函数的确切目的。随后是六个使用Basename函数的C语言脚本的例子。所有这些例子的目的只是为了让你了解Basename函数在不同情况下的行为。