Форум программистов, компьютерный форум CyberForum.ru

Копирование содержимого одного файла в другой посредством командной строки - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.75
typen2007
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 12
14.03.2012, 20:34     Копирование содержимого одного файла в другой посредством командной строки #1
Здравствуйте,

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

Саму программу которая должна открывать два файла, копировать содержимое из исходного и вставлять в указанный файл не составило особого труда. Программа работает если указать адреса файлов в самой программе а именно:

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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
 
using namespace std;
 
int _tmain( int argc, char* argv[])
{
   FILE *fp1,*fp2;
 
   if ((fp1 = fopen("1.txt","rb"))==NULL)
{printf("Cannot open original file. \n");
exit(1);
}
 
if ((fp2 = fopen("2.txt","wb"))==NULL)
{printf("Cannot open copy file. \n");
exit(1);
}
const int size=256;
char mas[size];
size_t read;
while((read = fread(mas,sizeof(char),size,fp1)) != 0)
{
   fwrite(mas,sizeof(char),read,fp2);
 
}
fclose(fp1);
fclose(fp2);
 return 0;
}
Вот в таком виде программа работает нормально (свою функцию она выполняет по крайней мере).
Однако мне нужно чтобы эта программа работала если бы ее запускали через командную строку.
Только вот сколько я ни пытался использовать argv в качестве параметра адреса файлов, у меня ничего путного так и не вышло (он видит argv и даже выводит мне его обратно через printf однако файл он не копирует).

Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2012, 20:34     Копирование содержимого одного файла в другой посредством командной строки
Посмотрите здесь:

C++ Написать программу записи содержимого из одного файла в другой : Тип файла текстовый
Перемещение содержимого из одного байта в другой байт C++
Копирование слов из одного файла в другой C++
C++ Переписать из одного файла в другой только третью и четвертую строки, содержащие пробелы
Перемещение содержимого одного контейнера в другой C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
14.03.2012, 20:38     Копирование содержимого одного файла в другой посредством командной строки #2
у вас есть массив аргументов char *argv[], вот его и используйте
C
1
2
    const char *fileNameInput = argv[1];
    const char *fileNameOutput = argv[2];
typen2007
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 12
14.03.2012, 21:31  [ТС]     Копирование содержимого одного файла в другой посредством командной строки #3
без изменений, программа по-прежнему считывает адреса файлов а дальше с ними ничего не происходит
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
14.03.2012, 21:37     Копирование содержимого одного файла в другой посредством командной строки #4
Цитата Сообщение от typen2007 Посмотреть сообщение
без изменений, программа по-прежнему считывает адреса файлов а дальше с ними ничего не происходит
а что должно с ними происходить? кода не вижу, телепатов нету
typen2007
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 12
14.03.2012, 21:56  [ТС]     Копирование содержимого одного файла в другой посредством командной строки #5
const char я по-моему тоже пробовал хотя последние 3 дня я попросту подставлял всевозможные команды от безвыходности и от того что немного нуб.
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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
using namespace std;
int _tmain( int argc, char* argv[])
{
   FILE *fp1,*fp2;
const char *fileNameInput = argv[1];
if ((fp1 = fopen(argv[1],"rb"))==NULL)
{printf("Cannot open original file. \n");
exit(1);
}
 
 
if ((fp2 = fopen("2.txt","wb"))==NULL)
{printf("Cannot open copy file. \n");
exit(1);
}
const int size=256;
char mas[size];
size_t read;
while((read = fread(mas,sizeof(char),size,fp1)) != 0)
{
   fwrite(mas,sizeof(char),read,fp2);
 
}
fclose(fp1);
fclose(fp2);
 return 0;
}
а зачем вообще fileNameInput позиционировать здесь как указатель? (с указателями я тоже только разбираюсь)
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
14.03.2012, 21:59     Копирование содержимого одного файла в другой посредством командной строки #6
потому что argv это массив указателей на аргументы командной строки, ну и что не работает? не разбираетесь откройте учебник и разбирайтесь с указателями
typen2007
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 12
14.03.2012, 22:28  [ТС]     Копирование содержимого одного файла в другой посредством командной строки #7
не работает сама процедура копирования и вставки, я честно говоря не пойму в чем дело я даже провел некий эксперимент, взял исходный код где я прямо в коде имена файлов прописал откомпилил и попытался запустить (Debug) через командную строку, результата никакого, в отличие от того если программу прогнать через среду разработки (VC++ 2008), также я немного покопался на форуме и нашел подобную тему Работа с файлами. Argv
По ходу у него тоже программа считывает argv и дальше ничего не выполняет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2012, 17:31     Копирование содержимого одного файла в другой посредством командной строки
Еще ссылки по теме:

C++ Удалить строки из одного файла и записать их в другой
C++ Как записать строки из одного файла в другой в обратном порядке?
Перенести из одного файла все строки, содержащие конкретное слово в другой C++

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

Или воспользуйтесь поиском по форуму:
typen2007
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 12
19.03.2012, 17:31  [ТС]     Копирование содержимого одного файла в другой посредством командной строки #8
Проблема все еще актуальна, помогите пожалуйста
Yandex
Объявления
19.03.2012, 17:31     Копирование содержимого одного файла в другой посредством командной строки
Ответ Создать тему
Опции темы

Текущее время: 01:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru