Как прочитать строку, включая escape-символы в C, используя popen () в Linux? - PullRequest
0 голосов
/ 23 марта 2020

Мне нужно отобразить все файлы и подкаталоги в каталоге в Linux (точнее, в Ubuntu 19.10), используя popen () в C. Соответствующий код приведен ниже. Проблема, когда я отлаживаю этот код, состоит в том, что переменная list содержит только первый экранирующий символ "\ n", который равен ".: \ N". Как можно сделать так, чтобы popen () выводил всю строку, включая символы escape-последовательности?

#include <stdio.h>

int main()
{
    FILE *read_file;
    char list[1000];

    read_file = popen("ls -R","r");
    fgets(list, 1000, read_file);
    pclose(read_file);

    printf("%s", list);

    return(0);
}

1 Ответ

0 голосов
/ 24 марта 2020

@ М Ом. Я пытался как то, что вы прокомментировали. Но ошибка сегментации возникает как и когда я пытаюсь сделать "fgets (list [++ i], sizeof (char), read_file);".

#include <stdio.h>

int main()
{
    FILE *read_file;
    char list[1000];
    int i = -1;

    read_file = popen("ls -R","r");
    do
    {
        fgets(list[++i], sizeof(char), read_file);
    }while(list[i] != NULL);
    pclose(read_file);

    printf("%s", list);

    return(0);
}
...