如何使用C来完成通配符function?

我是C的新手,现在我想用C来完成一个通配符函数。 例如,我写了一个名为myphoto的照片处理程序,我想这样使用它: myphoto ./photos/*.png ,然后myphoto将逐个处理目录中的所有png文件。

我想尽可能轻松地解决这个问题,而不使用正则表达式,我想出了一个想法,也许我可以使用EXEC函数来执行命令,但EXEC函数只返回int,而不是char *。

那么我该如何解决这个问题呢? 谢谢!

它是特定于操作系统的。 我给出了Posix和Linux的观点(在Windows上它是不同的,我不知道它)。

请注意,如果你正在编写程序myprog.c编译成myprog然后运行myprog photos/*.png myprog.cmain函数是获取一个字符串数组(声明int main(int argc, char**argv)然后参数数组在数组argvargc字符串….)。 启动myprog二进制可执行文件之前 ,shell将完成扩展。 见execve(2)

在Linux和Posix系统上:读取glob(7) ,您可能想要使用glob(3)和/或fnmatch(3)和/或wordexp(3) 。 如果某些数据(例如文件中的一行)包含photos/*.jpeg并且您的程序想要“全局”那么这些函数非常有用。 你不需要“泛化” main的参数,这已经由你的shell完成了。

阅读高级Linux编程