Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
ИмяПользователя
22 / 21 / 15
Регистрация: 02.04.2015
Сообщений: 213
1

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

30.06.2015, 18:10. Просмотров 368. Ответов 2
Метки нет (Все метки)

Добрый день.
Есть такой прототип:
C
1
int stat(char *filename, struct stat *statbuf)
Собственно, когда пишу так:
C
1
2
struct stat buff;
stat("MyFile", &buff);
Всё работает, когда пишу:
C
1
2
3
4
5
6
7
fp = popen("ls MyFile", "r");
memset(str, '\0', strlen(str));
if (fgets(str, BUF_SIZE, fp) != NULL)
{
   struct stat buff;
   stat(str, &buff);
}
- не находит файла;

Если вывести
C
1
printf("%s", str);
то можно заметить невооруженным глазом, что курсор перейдет на новую строчку; подозревал, что причина именно в этом. Пробовал "затереть"
C
1
str[strlen(str)] = ' ';
костыль не взлетел... Вернее - не так, как хотелось бы: "перехода курсора на новую строку" в prinf больше не происходит, но и в stat() файл не находит. Вопрос: как "правильно" скормить str функции
C
1
stat(str, &buff);
, что бы файл нашелся? ))

PS.
C
1
2
3
4
5
6
7
8
9
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(...), я считаю, отрабатывает...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2015, 18:10
Ответы с готовыми решениями:

Объявить массив из N указателей на функции, возвращающих указатели на функции, возвращающие указатель на char
Задание: Объявить массив из N указателей на функции, возвращающих указатели...

Какова максимальная длина строки, на которую может ссылаться указатель на массив символов?
У меня простой вопрос - какова максимальная длина строки, на которую может...

Почему нельзя двумерный массив преобразовывать в указатель на указатель?
Имеем массив: int daytab; при передаче его в функции количество столбцов...

Считывание строки и перевод в массив чисел
Работаю над аглоритмом длинной арифметики (умножение чисел). Сам алгоритм...

Перевод из int в char
Вылетает при запуске вот этот код void get_word(char* str, int p) { int...

2
tnk500
114 / 118 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
Завершенные тесты: 3
30.06.2015, 18:48 2
ИмяПользователя, C Linux? Почему бы не воспользоваться стандартной функцией fopen? Через popen, насколько я помню, подаются лишь команды (хотя, может, и возможно открыть файл так). Если будете fopen использовать, на всякий случай указывайте расширение файла.
0
ИмяПользователя
22 / 21 / 15
Регистрация: 02.04.2015
Сообщений: 213
30.06.2015, 19:34  [ТС] 3
Цитата Сообщение от tnk500 Посмотреть сообщение
C Linux?
- Да, сори что сразу ОС не уточнил;
Цитата Сообщение от tnk500 Посмотреть сообщение
Почему бы не воспользоваться стандартной функцией fopen?
- Это "дальше" по тексту))
в 2х словах:
в цикле делаем ls по определенной маске (маска формируется раньше и "в консоли" проверялась не раз);
если находится файл, удовлетворяющий маске (он ведь находится! printf() его выводит):
получаем размер - отправляем клиенту
отправляем сам файл
удаляем файл
Даже если таких файлов несколько - в следующей итерации цикла получим/обработаем следующий файл, удовлетворяющий условию.

Вроде на коленке собрал 2 примитива, тут подробней: (Конвертация (приведение) типов от массива байт к строке и int), когда параметр для stat() пишу "в ручную" вида "./MyFile" - всё корректно работает, проблема возникает именно при попытке передать параметр, объявленный как char * str; и получивший значение в описанном выше коде...

Собственно, исходя из задачи, мне всего-то и нужно - получить размер файла. Можно, конечно, замутить еще один однострочник в popen типа
Bash
1
ls -l str |awk '{print($5)}'
В str лежит имя реально существующего файла, и оно будет работать, но... стыдно, что ли)))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2015, 19:34

Перевод из double в char
Нужно написать программу: строкой вводим 1 слагаемое, 2 слагаемое, строку для...

Перевод из int в char
программа перевода из int в char, мне нужно написать эту же программу, но не...

Перевод double в char
char buff; float volt = readADC()*0.02932; // Тут в итоге получится должно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru