Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
1-09Mix
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 22
#1

Удаление файла - C++

22.04.2015, 19:16. Просмотров 481. Ответов 8
Метки нет (Все метки)

Здравствуйте, мне нужно удалить файл, имя которого записано в массив char. Пытался передать этот массив в функцию remove, возвращает ошибку. Это вообще возможно?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2015, 19:16
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Удаление файла (C++):

Удаление строки из файла\либо удаление самого файла. - C++
День добрый, вот функция(используемые переменные объявленны ранее): void delete_cruise() { FILE *fout; open_file("abase.dat"); ...

Удаление файла - C++
Такая проблема: существует код который в процессе работы создаёт много файлов, он их один раз использует, а потом они не нужны. Как их...

Удаление из файла - C++
Исправьте функцию удаления,что то не всегда нормально удаляет.хз чего. void udal() { system("cls"); int z=0; ...

Удаление из файла - C++
Помогите с Удалением из файла. Например: Я записал 2 животных, как удалить 1 из животных из файла? Вот мой код. Помогите дописать...

Удаление из файла - C++
Здравствуйте. Есть такое задание: "Дана последовательность a1...a20. Имеется в виду, что в ней есть несколько максимальных элементов....

Удаление из файла - C++
Добрый день. Подскажите пожалуйста у меня прога ежедневник, как мне сделать так чтобы если событие отработано он удалял это событие из...

8
DrOffset
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
22.04.2015, 19:22 #2
Цитата Сообщение от 1-09Mix Посмотреть сообщение
Это вообще возможно?
Да.
Цитата Сообщение от 1-09Mix Посмотреть сообщение
Пытался передать этот массив в функцию remove, возвращает ошибку.
Покажи код.
0
1-09Mix
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 22
22.04.2015, 21:41  [ТС] #3
Цитата Сообщение от DrOffset Посмотреть сообщение
Покажи код.
C++
1
2
3
4
5
6
    int n = recvfrom(my_sock, &gett[0], sizeof(gett), 0,
                (sockaddr *)&server_addr, &server_addr_size);
            printf("Message:%s", &gett[0]);
            int c = remove((const char *)gett);
            system("pause");
            break;
Получаю от сервера имя файла и пытаюсь его удалить, но remove возвращает (-1). Сама передача вроде верная, printf выводит нужную строчку
0
DrOffset
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
22.04.2015, 21:47 #4
Цитата Сообщение от 1-09Mix Посмотреть сообщение
gett
Как gett объявлен?
0
1-09Mix
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 22
22.04.2015, 21:55  [ТС] #5
Цитата Сообщение от DrOffset Посмотреть сообщение
Как gett объявлен?
как
C++
1
char gett[1024];
0
DrOffset
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
22.04.2015, 22:04 #6
1-09Mix, Понятно.
Сперва нужно проверить корректный ли путь получается. Если пересылается только имя файла, функция remove будет удалять в текущем каталоге. А вот какой каталог программа считает текущим тебе предстоит выяснить.
Начни с проверки кода errno после возврата функций -1. Выведи словесное описание ошибки
C++
1
fprintf(stderr, "error: %s\n", strerror(errno));
Возможно придется еще подключить
C++
1
2
#include <сstring>
#include <сerrno>
0
1-09Mix
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 22
22.04.2015, 22:18  [ТС] #7
DrOffset, Пишет "No such file or directory". Файл лежал и в папке проекта, и в Debug. Получается, можно только полный путь передавать?
0
DrOffset
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
22.04.2015, 22:36 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от 1-09Mix Посмотреть сообщение
Файл лежал и в папке проекта, и в Debug. Получается, можно только полный путь передавать?
Не обязательно передавать.
Текущий каталог понятие относительное. Зависит от многих вещей, если нужно просто брать файла, лежащий рядом с exe, то можно сперва получить полный путь к exe, а потом приклеить к нему полученное имя файла.
Если у тебя Windows, то можно так:
C++
1
2
3
HMODULE hModule = GetModuleHandleA(NULL);
char path[MAX_PATH];
GetModuleFileNameA(hModule, path, MAX_PATH);
И затем от полученной строки отрезать имя exe. Это и будет путь.
Насчет суффикса А, имей в виду, что Windows работает в юникоде, поэтому полученный таким образом путь может быть нечитаем, если имеет место несоответствие кодировок или путь содержит символы, непредставимые локальной кодировке. Рекомендую проверить сперва на путях, содержащих только латиницу, чтобы не смешивать две проблемы в одну. А вообще, нужно позаботиться о переводе своей программы в юникод.
1
1-09Mix
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 22
22.04.2015, 23:10  [ТС] #9
DrOffset,
Заработало, были в пути русские символы, не подумал об этом. Спасибо за помощь
0
22.04.2015, 23:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2015, 23:10
Привет! Вот еще темы с ответами:

Удаление файла - C++
А не подскажите как на плюсах функцию удаления прописать? Нужна удалять файл в корне проги моей. Только чтобы путь не нужно было...

Удаление записи из файла - C++
Здравствуйте. Помогите пожалуйста над задачей, которую я не смог написать. Нужно удалить запись из файла, я понимаю, что нужно записывать...

Удаление бинарного файла - C++
Доброго времени суток! Не могу удалить файл &quot;prile.dat&quot;. Смысл функции &quot;find_and_change&quot; в том, чтобы скопировать часть содержимого из...

Удаление записи из файла - C++
Вот код который добавляет 10 записей в файл..(не компилил, но работать он должен) #include &lt;iostream&gt; #include &lt;fstream&gt; using...


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

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

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