Копирование файла, используя имена исходного и копируемого файла как аргументы командной строки - C (СИ)
Формулировка задачи:
Напишите программу копирования файла, которая использует имена исходного файла и копируемого файла как аргументы командной строки.
я знаю как создать файл. А как дальше в нем работать?
#include <stdio.h>
#include <conio.h>
int main()
{
char bal;
FILE *f;
if((f=fopen("1.txt","w"))==NULL)
printf("not\n");
else
{
while(!feof(f))
{
scanf("%c", &bal);
if(bal=='0')
break;
fprintf(f,"%c\n", bal);
fclose(f);
}
}
}Решение задачи: «Копирование файла, используя имена исходного и копируемого файла как аргументы командной строки»
textual
Листинг программы
int main(int argc, char *argv[])
{
char ch = 0;
if (argv[1] && argv[2])
{
FILE * from = fopen(argv[1], "r");
if (from)
{
FILE * to = fopen(argv[2], "w");
if (to)
{
while (!feof(from))
{
fscanf(from, "%c", &ch);
fprintf(to, "%c", ch);
}
printf("Successfully copied from %s to %s.", argv[1], argv[2]);
}
else
{
printf("can't open %s for writing", argv[2]);
}
fclose(to);
}
else
{
printf("can't open %s for reading", argv[1]);
}
fclose(from);
}
else
{
printf("usage file from.txt to.txt");
}
return 0;
}
Объяснение кода листинга программы
- Входные данные для программы - имена исходного и копируемого файла как аргументы командной строки.
- Проверка наличия аргументов командной строки.
- Открытие исходного файла для чтения.
- Проверка открытия исходного файла.
- Открытие копируемого файла для записи.
- Проверка открытия копируемого файла.
- Чтение исходного файла посимвольно и запись символов в копируемый файл.
- Проверка достижения конца файла.
- Закрытие копируемого файла.
- Проверка закрытия копируемого файла.
- Закрытие исходного файла.
- Проверка закрытия исходного файла.
- Вывод сообщения об успешном копировании.
- Обработка ошибки при открытии копируемого файла.
- Вывод сообщения об ошибке при открытии копируемого файла.
- Обработка ошибки при открытии исходного файла.
- Вывод сообщения об ошибке при открытии исходного файла.
- Вывод сообщения об ошибке в случае использования неправильной команды.
- Возврат нулевого значения.
- Завершение работы программы.