我是C的新手,现在我想用C来完成通配符函数。例如,我编写了一个名为myphoto的照片处理程序,我想这样使用它:myphoto./photos/*.png,然后myphoto将逐个处理dir中的所有png文件。
我想尽可能简单地解决这个问题,不使用正则表达式,我想到了一个想法,也许我可以使用EXEC函数来执行命令,但是EXEC函数只返回int,而不是char*。
那么我该如何解决这个问题呢?谢谢!
最佳答案
它是特定于操作系统的。我给出了Posix和Linux的观点(在Windows上是不同的,我不知道)。
注意,如果您正在将编译成myprog.c
的程序写入myprog
中,则运行myprog photos/*.png
中的main
函数正在获取字符串数组(声明myprog.c
然后参数数组在数组int main(int argc, char**argv)
中具有argc
字符串…)。在启动argv
二进制可执行文件之前,由shell完成扩展。见execve(2)
在Linux和Posix系统上:readglob(7),您可能需要使用glob(3)和/或fnmatch(3)和/或wordexp(3)。如果某些数据(例如文件中的一行)包含myprog
,并且您的程序希望“glob”它,那么这些函数非常有用。您不需要“glob”photos/*.jpeg
的参数,这已经由您的shell完成了。
阅读Advanced Linux Programming
关于c - 如何使用C完成通配符功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26018886/