Чтение-запись из файла в файл - C (СИ)
Формулировка задачи:
Написать 2 программы копирования файлов.
Имена файлов для копирования задаются в командной строке: причем 1-ый аргумент – это имя файла откуда копируют, а 2-ой аргумент - это имя файла куда надо скопировать информацию.
В 1-ой программе использовать бесформатный ввод-вывод верхнего уровня. Для этого создать буфер ввода-вывода размером
8 – 16 Кб.
Во 2-ой программе использовать ввод-вывод нижнего уровня.
Выкладываю коды программ: 1ая
Код второй программы:
Программы запускаются, ошибок нет. Вот только во 2ой файл информация никак не записывается, он так и остается пустым.
#include <stdio.h>/*подключение библиотеки ввода вывода данных*/ int main(int argc, char *argv[]) { char * path1 = argv[1];/*путь исходного файла */ char * path2 = argv[2];/*путь файла для записи*/ int nbytes = 10000;/*количество байт в буфере*/ int readBytes;/*количесвтво прочитанных байт*/ char buf [10000];/*создание буфера*/ FILE * file1 = fopen(path1,"r");/*открытие первого файла для чтения*/ readBytes = fread(buf,1,nbytes,file1);/*считывание содержимого файла в буфер*/ FILE * file2 = fopen(path2,"a");/*открытие второго файла для записи*/ fwrite(buf,1,readBytes,file2);/*запись считанного буфера во второй файл */ fclose(file1);/*закрытие первого файла*/ fclose(file2);/*закрытие второго файла*/ return 0; }
#include <io.h>/*подключение библиотеки ввода вывода данных*/ #include <fcntl.h>/*подключние библиотеки, содержащей флаги O_RDONLY и O_WRONLY*/ int main(int argc, char *argv[]) { char * path1 = argv[1];/*путь исходного файла */ char * path2 = argv[2];/*путь файла для записи*/ char buf[10000];/*Создание буфера*/ int h;/*описатель*/ int nbytes = 10000;/*размер буфера*/ int readBytes;/*количесвтво прочитанных байт*/ h = open(path1,O_RDONLY);/*открытие файла для чтения*/ readBytes = read(h,buf,nbytes);/*чтение в буфер из файла*/ close(h);/*закрытие файла*/ h=open(path2,O_WRONLY);/*открытие второго файла для записи*/ write(h,buf,readBytes);/*запись считанного буфера во второй файл */ close(h);/*закрытие второго файла*/ return 0; }
Подскажите в чем тут проблема,
и напишите как именно это все дело написать в командной строке, может я в записи ошибаюсь..Решение задачи: «Чтение-запись из файла в файл»
textual
Листинг программы
FILE *f; char s[]="a.dat"; struct tovar { int amount,c,debt; char name[40],zak[30]; } b; //---------------- if ( (f=fopen(s,"ab+"))==NULL ) { ShowMessage("Файла нет!");return; } // Сообщение об ошибке открытия ... fwrite(&b,sizeof(tovar),1,f); fclose(f);
Объяснение кода листинга программы
- Объявляется указатель на файл
f
. - В качестве имени файла используется строка
s[]
, которая равнаa.dat
. - Объявляется структура
tovar
, которая содержит поля:amount
,c
,debt
,name
иzak
. Тип данных этих полей -int
, аname
иzak
-char
. - Если файл не открывается (файл не найден или нет доступа), выводится сообщение об ошибке
Файла нет!
и программа возвращает управление. - Запись данных в файл происходит с помощью функции
fwrite()
. В качестве аргументов функции передаются адрес структурыb
(предполагается, что она уже инициализирована), размер структуры в байтах (sizeof(tovar)
) и количество структур, которые необходимо записать в файл (1
). - Файл закрывается с помощью функции
fclose()
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д