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

С++ для начинающих

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

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

14.03.2012, 20:34. Просмотров 5666. Ответов 7
Метки нет (Все метки)

Здравствуйте,

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

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

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 однако файл он не копирует).

Заранее спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2012, 20:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Копирование содержимого одного файла в другой посредством командной строки (C++):

Копирование содержимого одного текстового файла в другой - C++
Открытие одного текстового файла и создание другого с записью в него информации с первого открытого файла, делал так как знал короче говоря...

Написать программу записи содержимого из одного файла в другой : Тип файла текстовый - C++
#include &quot;StdAfx.h&quot; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main () { FILE...

Реализовать программу в виде исполняемого файла, запускаемого посредством аргументов командной строки - C++
не могу понять что это означает и как это реализовать: Работа должна быть выполнена в виде 1 исполняемого файла, принимающего...

Передать из одного файла в другой текст построчно посредством read() write() - C++
# include &lt;iostream&gt; # include &lt;vector&gt; # include &lt;fstream&gt; # include &lt;string&gt; using namespace std; int main () { ...

Копирование слов из одного файла в другой - C++
Написать программу для автоматического копирования слов из одного файла в другой. Копировать следует только слова, содержащие четное...

Удалить строки из одного файла и записать их в другой - C++
имеется текстовый файл F1.txt. В нем, скажем 10 строк, разделенный знаком каретки(снос строки). пример: 0а 1б 2в 3г 4д ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
panicwassano
592 / 560 / 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];
0
typen2007
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 12
14.03.2012, 21:31  [ТС] #3
без изменений, программа по-прежнему считывает адреса файлов а дальше с ними ничего не происходит
0
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
14.03.2012, 21:37 #4
Цитата Сообщение от typen2007 Посмотреть сообщение
без изменений, программа по-прежнему считывает адреса файлов а дальше с ними ничего не происходит
а что должно с ними происходить? кода не вижу, телепатов нету
0
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 позиционировать здесь как указатель? (с указателями я тоже только разбираюсь)
0
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
14.03.2012, 21:59 #6
потому что argv это массив указателей на аргументы командной строки, ну и что не работает? не разбираетесь откройте учебник и разбирайтесь с указателями
0
typen2007
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 12
14.03.2012, 22:28  [ТС] #7
не работает сама процедура копирования и вставки, я честно говоря не пойму в чем дело я даже провел некий эксперимент, взял исходный код где я прямо в коде имена файлов прописал откомпилил и попытался запустить (Debug) через командную строку, результата никакого, в отличие от того если программу прогнать через среду разработки (VC++ 2008), также я немного покопался на форуме и нашел подобную тему Работа с файлами. Argv
По ходу у него тоже программа считывает argv и дальше ничего не выполняет.
0
typen2007
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 12
19.03.2012, 17:31  [ТС] #8
Проблема все еще актуальна, помогите пожалуйста
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2012, 17:31
Привет! Вот еще темы с ответами:

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

Переписать строки с одного текстового файла в другой в обратном порядке - C++
Здравствуйте. Задача следующая : Имеется текстовый файл. Переписать его строки в другой файл. Порядок строк во втором файле должен...

не удается передать объект из одного класса в другой посредством return - C++
есть класс Reading,в котором находится два объекта типа string :text и line,их я передаю с помощью двух аналогичных методов std::string...

Перенести из одного файла все строки, содержащие конкретное слово в другой - C++
Суть в том,чтобы создать 2 файла &quot;file1&quot; и &quot;file2&quot;, в &quot;file1&quot; написан какой то текст,&quot;file2&quot; пустой, нужно из первого файла перенести все...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.03.2012, 17:31
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru