Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
4 / 3 / 4
Регистрация: 06.12.2011
Сообщений: 63

Копирование файла по фиксированным частям

12.04.2012, 21:46. Показов 1873. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdio.h>
 
 
FILE *f,*fr;
int nsize=64; //byte
int posled(void);
 
int main(int argc, char *argv[])
{
        posled();
 
    return 0;
}
 
int posled(void)
{
    puts("Последовательное программирование");
    f=fopen(argv[1],"rb");
    if(f==NULL) puts("File not create.\n");
    puts("Определение размера исходного файла...");
    if(fseek(f,0,SEEK_END)!=0){
        puts("Error 1!");
        fclose(f);
        return 1;
    }
    long int size=ftell(f);
    if(size==-1){
        puts("Error 2!");
        fclose(f);
        return 2;
    }
    printf("Размер исходного файла: %lu байт\n",size);
    puts("Определение кол-ва блоков для копирования");
    int n=size/nsize+1;
    printf("Блоков для копирования: %d, размер блока: %d байт\n",n,nsize);
    if(fseek(f,0,SEEK_SET)!=0){
        puts("Error 3!");
        fclose(f);
        return 3;
    }
    //-------------------------------------------------
    fr=fopen(argv[2],"wb");
    if(fr==NULL) puts("Файл не удалось открыть для записи!");
    
    
    //-------------------------------------------------
    puts("Создание и обнуление конечного файла...");
    //создание и обнуление конечного файла  
    unsigned char byte='0';
    if((0!=fseek(fr,size-1,SEEK_SET))||(fwrite(&byte,sizeof(byte),1,fr)!=1)){
        puts("Ошибка обнуления конечного файла!");
        return 3;
    }
    //-------------------------------------------------
    puts("Копирование исходного файла...");
    //копирование файла
    
    
    
        
    return 0;
}
Как копирповать файл по фиксированным частям(64 байта), помогите.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.04.2012, 21:46
Ответы с готовыми решениями:

Чтение файла по частям
Всем здравствуйте, нужно мне считать файл в память, при этом разделить файл на равные куски и потом как то обратиться к этим кускам. Не...

Просмотр типизированного файла по частям
реализовал просмотр файла. если записей больше 20, то очищаем экран и выводит еще 20 записей. минус - по базе двигаемся только вперед....

Чтение бинарного файла по частям
Нужно разделить бинарный файл на куски и записать каждый в отдельный фаил: если размер файла 7 байт - то должно получится 4 фаила размером...

6
w@
15 / 15 / 5
Регистрация: 11.04.2012
Сообщений: 28
12.04.2012, 23:02
WinApi нельзя использовать?
WriteFile и ReadFile
хотя насчет Си не знаю, есть ли там WinApi. плюсы точно могут это использовать
0
4 / 3 / 4
Регистрация: 06.12.2011
Сообщений: 63
12.04.2012, 23:10  [ТС]
нет, программирование под линукс... нужно копировать по байтно
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
12.04.2012, 23:15
Bash
1
man 2 write
0
4 / 3 / 4
Регистрация: 06.12.2011
Сообщений: 63
12.04.2012, 23:18  [ТС]
alkagolik, а по подробнее? на конкретном примере

Добавлено через 1 минуту
Просто как считывать, например, 64 байта сразу или по байтно из одного файла и записывать в другой на си?
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
12.04.2012, 23:29
Цитата Сообщение от nicklifs Посмотреть сообщение
нет, программирование под линукс...
man 2 write
Цитата Сообщение от nicklifs Посмотреть сообщение
записывать в другой на си?
fwrite
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
13.04.2012, 16:05
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <stdlib.h>
 
#define COPY_BLOCK_SIZE 64
#define PROGRAM_NAME argv[0]
#define INPUT_FILE_NAME argv[1]
#define OUTPUT_FILE_NAME argv[2]
 
int main(int argc, char ** argv) {
    unsigned char buf[COPY_BLOCK_SIZE];
    FILE * fin, * fout;
    size_t bytes;
    
    if ( argc < 3 ) {
        fprintf(stderr, "Usage: %s input_file output_file\n", PROGRAM_NAME);
        exit(1);
    }
    
    if ( ! ( fin = fopen(INPUT_FILE_NAME, "rb") ) ) {
        fprintf(stderr, "%s: can't open %s for input!\n", PROGRAM_NAME, INPUT_FILE_NAME);
        exit(1);
    }
    if ( ! ( fout = fopen(OUTPUT_FILE_NAME, "wb") ) ) {
        fprintf(stderr, "%s: can't open %s for output!\n", PROGRAM_NAME, OUTPUT_FILE_NAME);
        if ( fclose(fin) )
            fprintf(stderr, "%s: can't properly close %s!\n", PROGRAM_NAME, INPUT_FILE_NAME);
        exit(1);
    }
    
    while ( ( bytes = fread(buf, sizeof(char), COPY_BLOCK_SIZE, fin) ) != (size_t)EOF && bytes > 0 ) {
        if ( fwrite(buf, sizeof(char), bytes, fout) != bytes ) {
            fprintf(stderr, "%s: can't write to %s!\n", PROGRAM_NAME, OUTPUT_FILE_NAME);
            if ( fclose(fin) )
                fprintf(stderr, "%s: can't properly close %s!\n", PROGRAM_NAME, INPUT_FILE_NAME);
            if ( fclose(fout) )
                fprintf(stderr, "%s: can't properly close %s!\n", PROGRAM_NAME, OUTPUT_FILE_NAME);
            exit(1);
        }
    }
    
    if ( ferror(fin) ) {
        fprintf(stderr, "%s: can't readf rom %s!\n", PROGRAM_NAME, INPUT_FILE_NAME);
        if ( fclose(fin) )
            fprintf(stderr, "%s: can't properly close %s!\n", PROGRAM_NAME, INPUT_FILE_NAME);
        if ( fclose(fout) )
            fprintf(stderr, "%s: can't properly close %s!\n", PROGRAM_NAME, OUTPUT_FILE_NAME);
        exit(1);
    }
    
    if ( fclose(fin) ) {
        fprintf(stderr, "%s: can't properly close %s!\n", PROGRAM_NAME, INPUT_FILE_NAME);
        if ( fclose(fout) )
            fprintf(stderr, "%s: can't properly close %s!\n", PROGRAM_NAME, OUTPUT_FILE_NAME);
        exit(1);
    }
    
    if ( fclose(fout) ) {
        fprintf(stderr, "%s: can't properly close %s!\n", PROGRAM_NAME, OUTPUT_FILE_NAME);
        exit(1);
    }
    
    fprintf(stderr, "Done.\n");
    exit(0);
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2012, 16:05
Помогаю со студенческими работами здесь

Как сигнатура узнает какие байты РЕ файла соответствуют ее частям?
КАК сигнатура узнает какие байты РЕ файла соотвецтвуют ее частям? К примеру, я хочу начать разбор файла. Отсчитывать байты равными...

Загрузка большого текстового файла. Как грузить его по частям
Столкнулся с такой проблемой: при загрузке в &quot;string&quot; большого текстового файла методом &quot;File.ReadAllText&quot; вылетает исключение...

При загрузке файла по частям сервер фиксирует ошибку UPLOAD_ERR_PARTIAL
Загружаю файл на сервер через сокет вызывая send. Сокет в неблокирующем режиме. Если передаю send сразу весь файл загрузка успешна. Для...

Копирование определенного текста из файла, копирование и вставка в статичную переменную
Доброго вечера. Делаю программу которая бы выводила погоду на сегодня через данные сайта. Завис на передаче данных с сайта. Как можно...

Копирование одного текстового файла в другой, используя посимвольное, построчное и поблочное копирование
Здраствуйте, у меня такая проблемма мне надо обеспечить копирование одного текстового файла в другой, используя посимвольное, построчное...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru