Указатель на массив char-ов и перевод строки в конце - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день. Есть такой прототип:
int stat(char *filename, struct stat *statbuf)
Собственно, когда пишу так:
struct stat buff;
stat("MyFile", &buff);
Всё работает, когда пишу:
fp = popen("ls MyFile", "r");
memset(str, '\0', strlen(str));
if (fgets(str, BUF_SIZE, fp) != NULL)
{
   struct stat buff;
   stat(str, &buff);
}
- не находит файла; Если вывести
printf("%s", str);
то можно заметить невооруженным глазом, что курсор перейдет на новую строчку; подозревал, что причина именно в этом. Пробовал "затереть"
str[strlen(str)] = ' ';
костыль не взлетел... Вернее - не так, как хотелось бы: "перехода курсора на новую строку" в prinf больше не происходит, но и в stat() файл не находит. Вопрос: как "правильно" скормить str функции
stat(str, &buff);
, что бы файл нашелся? )) PS.
fp = popen("ls MyFile", "r");
memset(str, '\0', strlen(str));
if (fgets(str, BUF_SIZE, fp) != NULL)
{
   struct stat buff;
   stat(str, &buff);
}
str[strlen(str)] = ' ';
printf("%s", str);
Выведет в консоль MyFile, то есть popen(...), я считаю, отрабатывает...

Решение задачи: «Указатель на массив char-ов и перевод строки в конце»

textual
Листинг программы
ls -l str |awk '{print($5)}'

Объяснение кода листинга программы

  1. Команда ls -l str выводит содержимое каталога, начиная с имени str, с подробной информацией о каждом файле в этом каталоге.
  2. awk '{print($5)}' - это команда, используемая для обработки вывода команды ls -l str. Она ищет пятую колонку (счет начинается с 1) в выводе ls -l str и выводит ее.
  3. В данном случае, пятая колонка содержит информацию о правах доступа к файлам в каталоге str.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.714 из 5
Похожие ответы