Как разобрать путь к папке с пробелами в коде C - PullRequest
0 голосов
/ 24 января 2010

Я использую этот простой код C:

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

Проблема в том, что в имени папки есть пробел ... Я знаю, что в Unix мне нужно добавить «\», например, ls my \ folder \ name

Как я могу обойти это? Спасибо!

Ответы [ 4 ]

2 голосов
/ 25 января 2010

Если вашей конкретной проблемой является получение списка имен файлов в папке, вам лучше использовать системные вызовы opendir / readdir / closedir. См. Их страницы руководства для деталей.

2 голосов
/ 24 января 2010

Используйте fork() и exec*() вместо.

1 голос
/ 24 января 2010

Если вы сделаете это:

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

вы окажетесь в неопределенной зоне поведенияВам нужно выделить немного памяти для команды:

char command[1000];    // for example
sprintf (command, "ls %s", folderpath);
1 голос
/ 24 января 2010

Простой выход - поместить имя папки в одинарные кавычки - sprintf( command, "ls '%s'", folder );. Остерегайтесь ввода команды , так как @ndim напоминает нам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...