如何在C代码中解析带空格的文件夹路径

我正在使用这个简单的C代码:

char * command = NULL; sprintf (command, "ls %s", folderpath); system(command); 

问题是文件夹名称中有空格…我知道在Unix中我需要添加一个“\”,例如ls my \ folder \ name

我怎么能绕过这个? 谢谢!

简单的方法是将文件夹名称放在单引号内 – sprintf( command, "ls '%s'", folder ); 。 注意@ndim提醒我们的命令注入

请改用fork()exec*()

如果您的具体问题是获取文件夹中的文件名列表,那么最好使用系统调用opendir / readdir / closedir。 有关详细信息,请参见其手册页

如果你这样做:

 char * command = NULL; sprintf (command, "ls %s", folderpath); 

你是在未定义的行为土地。 您需要为命令分配一些内存:

 char command[1000]; // for example sprintf (command, "ls %s", folderpath);