Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.12.2012
Сообщений: 61

Перемещение одиночных файлов

02.01.2014, 15:14. Показов 2264. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ребят, помогите написать процедуру перемещения одиночных файлов
у нас есть готовый файл-менеджер типа Midnight Comander, в котором мы сами программируем кнопки F1.....F8, вот пример процедуры копирования, делал ее не я


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
int copyFILE(char *OldFL, char *NewFL )
{
struct stat FL;
struct dirent *elem;
int f1,f2,n,i;
char h[BUFSIZ];
DIR *dp;
if (stat(OldFL,&FL)<0)
 {
 dialog("Error: Not received the information about a file!!!","Ok",NULL);
 return 1;
 }
if(access(OldFL,R_OK)<0) 
  {                                   
   if(errno==EACCES)                                 
     {                                    
      dialog ("ERROR: NO ACCESS","OK",NULL);
      return 1;                           
     }                               
  } 
if (S_ISDIR(FL.st_mode))
 {
  dialog ("This is not file");
  return 1;
 }
f1=open(OldFL,O_RDONLY,0);
if (f1<0)
  {
   dialog ("Error open","OK",NULL);
   return 1;
  }
f2=creat(NewFL,atr);
if (f2<0)
  {
   dialog ("Error creat","OK",NULL); 
   return 1;
  }
while((n=read(f1,h,BUFSIZ))>0)
write(f1,h,n);
close (f1);
close (f2);     
return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.01.2014, 15:14
Ответы с готовыми решениями:

Перемещение файлов и папок
Доброй ночи Подскажите пожалуйста как перемещать файлы и папки программно на СИ++ под LINUX Функция rename может перемещать файлы, а...

Консольное приложение: отображение структуры файлов и папок, перемещение по папкам, открытие файлов
Приложение написанное на языке СИ позволяющее в консольном режиме отображать структуру файлов и папок,перемещаться по папкам и открывать на...

Создание папок с именами заданных файлов и перемещение этих файлов в созданные папки
Подскажите пожалуйста как по названиям файлов txt создать папки и положить в каждую из папок файл с таким же названием.

6
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
02.01.2014, 15:48
Возможно вам подойдёт функция rename.
Цитата Сообщение от RENAME(2) Linux Programmer's Manual RENAME(2)
NAME
rename - change the name or location of a file

SYNOPSIS
#include <stdio.h>

int rename(const char *oldpath, const char *newpath);

DESCRIPTION
rename() renames a file, moving it between directories if
required. Any other hard links to the file (as created
using link(2)) are unaffected. Open file descriptors for
oldpath are also unaffected.

If newpath already exists it will be atomically replaced
(subject to a few conditions; see ERRORS below), so that
there is no point at which another process attempting to
access newpath will find it missing.

If oldpath and newpath are existing hard links referring to
the same file, then rename() does nothing, and returns a
success status.

If newpath exists but the operation fails for some reason
rename() guarantees to leave an instance of newpath in
place.

oldpath can specify a directory. In this case, newpath must
either not exist, or it must specify an empty directory.

However, when overwriting there will probably be a window in
which both oldpath and newpath refer to the file being
renamed.
If oldpath refers to a symbolic link the link is renamed; if
newpath refers to a symbolic link the link will be overwrit‐
ten.

RETURN VALUE
On success, zero is returned. On error, -1 is returned, and
errno is set appropriately.
0
0 / 0 / 0
Регистрация: 12.12.2012
Сообщений: 61
02.01.2014, 17:08  [ТС]
Цитата Сообщение от schdub Посмотреть сообщение
NAME
rename - change the name or location of a file
так мне это писать или вот это
Цитата Сообщение от schdub Посмотреть сообщение
#include <stdio.h>
int rename(const char *oldpath, const char *newpath);
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
02.01.2014, 20:55
пример использования:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* rename example */
#include <stdio.h>
 
int main ()
{
  int result;
  char oldname[] ="oldname.txt";
  char newname[] ="newname.txt";
  result= rename( oldname , newname );
  if ( result == 0 )
    puts ( "File successfully renamed" );
  else
    perror( "Error renaming file" );
  return 0;
}
Вот пример рализации на С++:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <string>
#include <cstdio>
#include <cassert>
 
const std::string __DIR_SEPARATOR__ = "/";
 
static int moveFILE(
      const std::string & oldPath
    , const std::string & newPath
    , const std::string & newName = std::string()
) {
    assert(!oldPath.empty());
    assert(!newPath.empty());
 
    std::string path(newPath);
    if (!newName.empty()) {
        // берем новое имя файла из соответствующей переменной
        path += __DIR_SEPARATOR__ + newName;
    } else {
        // парсим имя файла из имени старого пути
        const std::string::size_type idx = oldPath.rfind(__DIR_SEPARATOR__);
        path += __DIR_SEPARATOR__ + oldPath.substr((idx == std::string::npos) ? 0 : idx + 1);
    }
 
    printf("DEBUG: %s(): from='%s' to='%s'\n", __FUNCTION__, oldPath.c_str(), path.c_str());
 
    return rename(oldPath.c_str(), path.c_str());
}
 
int main () {
    if (!moveFILE("./enc.txt", "./dir", "newfile.txt")) {
        puts("File successfully renamed");
    } else {
        perror("Error renaming file");
    }
    return 0;
}
Если мы вызываем функции moveFILE() без 3-го параметра, то имя файла будет
браться из старого имени файла, т.е. для данного примера, новый путь файла
будет "./dir/enc.txt". Если 3-й параметр указан (как в коде примера), то новый
путь будет "./dir/newfile.txt"
1
0 / 0 / 0
Регистрация: 12.12.2012
Сообщений: 61
03.01.2014, 13:59  [ТС]
спасибо конечно, но, этот код подойдет для с++ под линукс?

Добавлено через 5 часов 27 минут
блин, у меня столько ошибок вывело, я в шоке, что с ними делать???
0
0 / 0 / 0
Регистрация: 12.12.2012
Сообщений: 61
03.01.2014, 14:00  [ТС]
вот
Миниатюры
Перемещение одиночных файлов  
0
0 / 0 / 0
Регистрация: 12.12.2012
Сообщений: 61
03.01.2014, 14:01  [ТС]
это только часть ошибок
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.01.2014, 14:01
Помогаю со студенческими работами здесь

Перемещение файлов в каталоги, создаваемые в соответствии с именами или частями имён этих файлов
Добрый день. Прошу помочь. Задача: в текущем каталоге имеется N-ое кол-во файлов с определенными названием, типа: Название1_1.jpg ...

Автосортировка файлов - перемещение файлов в подпапки по 4 штуки
Уважаемые программисты, нужна Ваша помощь! Необходимо с помощью bat-файла автоматизировать следующий процесс. Дано: папка с именем...

Перемещение файлов
Кто-нибудь, помогите с задачей. Очень прошу. Или подскажите, как можно с ней разобраться. Суть задачи: После того, как произошло...

Перемещение файлов.
Допустим в листбокс1 у меня список файлов. Эти файлы находятся рядом с экзешником программы. Мне нужно переметить эти файлы (которые в...

Перемещение файлов
Здравствуйте, не могу домыслить как переместить несколько файлов в созданнную по дате папку (с указанием полного пути работает) и чтобы...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru