Чтение директории как файл - C (СИ)
Формулировка задачи:
Работаю в среде Убунту 14.04. Попробовал прочитать директорию вот таким способом:
В результате получил в консоль следующий вывод:
ru_RU.UTF-8
������������������������������������������������������������������������������������������������������������������������ ������������������������������������������������������������������������������������������������������������������������ ������������������������������������������������������������������������������������������������������������������������ ������������������������������������������������������������������������������������������������������������������������ ������������������������������������������������������������������������������������������������������������������������ ������������������������������������������������������������������������������������������������������������������������ ������������������������������������������������������������������������������������������������������������������������ ������������������������������������������������������������������������������������������������������������������������ ����������������������������������������������������������������
Исходя из этого хочу спросить: являеться ли такое чтение директории корректным вообще? и если - да, то как убрать кракозябры и вывести данные в более читаемом виде?
Хочу добавить, что функция puts("привет") в другой программе в этой же системе работает абсолютно нормально, функцию putc() из цикла пробовал менять на printf() - результат тот-же. Способ чтение с rb на rt тоже менял.
#include<stdio.h> #include<locale.h> int main(){ int i=0; FILE *fp; printf ("\n"); puts (setlocale(LC_ALL, "")); printf ("\n"); if( (fp = fopen( "/", "rb")) != NULL ){ while( !feof(fp) && i<1024){ putc(fgetc(fp), stdout); i++; } } else puts("Ошибка открытия файла."); fclose(fp); printf ("\n\n"); return 0; }
Решение задачи: «Чтение директории как файл»
textual
Листинг программы
man opendir