@amalchikov

В чем ошибка в коде?

Всем привет! В учебнике ЛАФОРЕ есть такой код:
#include <fstream>
#include <iostream>
using namespace std;
#include<process.h>
int main(int argc, char*argv[])
{
	setlocale(0,"");
	if (argc !=3)
	{
		cerr<<"\nФормат команды: ocopy srcfile destfile";
	exit(-1);
	}
	
	
	char ch;
	ifstream ifile;
	ifile.open(argv[1]);
	ofstream outfile;
	outfile.open(argv[2]);
	while(ifile)
	{
		ifile.get(ch);
		outfile.put(ch);
	}
	


	system("pause");
	return 0;
};


Но когда я его у себя набираю и запускаю, программа возвращает -1, но я даже не успеваю вбить команду с аргументами, она запускается и сразу вылетает. Что я делаю не так?
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
@NeoZeed
int main(int argc, char*argv[]).
argc - количество передаваемых параметров программе,
argv[] - массив параметров.
Следовательно программу нужно скомпилировать, затем вызывать из командной строки с передачей параметров. Вызов должен содержать путь до скомпилированного файла и аргументы (судя по тексту программы - названия файлов ввода и вывода)
Например, C:\MyProgram.exe "parametr1" "in.txt" "out.txt"
(Возможно без кавычек и с полными путями до файлов in и out)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
запускать надо сразу с аргументами - это аргументный вызов, а не интерактивный (где ждут ввода от пользователя).
Например, так:
ocopy file1.txt file2.txt
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы