• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed wiersz poleceń - obsługa plików

42 Warsaw Coding Academy
0 głosów
816 wizyt
pytanie zadane 25 września 2017 w C i C++ przez B0nkers Początkujący (310 p.)
zamknięte 26 września 2017

Witam,

Mam problem z programem, który mam uruchomić w wierszu poleceń Windows. Zadanie polega na tym aby utworzyć plik tekstowy z jakąś zawartością a następnie skopiować jego zawartość do nowego pliku. Program powinien pobierać nazwy plików za pośrednictwem wiersza poleceń. Program powinien informować o ewentualnym niepowodzeniu przy próbie otwarcia. 

Przy odpalaniu w wierszu poleceń wyświetla się komunikat z tego fragmentu programu:

if (!fin.is_open())
		{
			cerr << "Nie mozna otworzyc pliku "<<argv[1]<<" \n";
			exit(EXIT_FAILURE);
		}

 

Plik, z którego program pobiera dane wypełniłem, więc nie wiem czemu wyskakuje taki o to komunikat.

Poniżej kod całego programu:

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cstdlib>

int main(int argc, char *argv[])
{
	using namespace std;

	cerr << "Program kopiuje zawartosc jednego pliku do drugiego\n\n";

	if (argc == 1)
	{
		cerr << "Podales tylko jeden plik -> " << *argv[0] << endl;
		exit(EXIT_FAILURE);
	}

	if (argc == 3)
	{
		ifstream fin;
		fin.open(argv[1]);	//otwieranie pliku z oryginalną zawartością
		if (!fin.is_open())
		{
			cerr << "Nie mozna otworzyc pliku "<<argv[1]<<" \n";
			exit(EXIT_FAILURE);
		}

		char ch;
		ofstream fout;	
		fout.open(argv[2]);		//otwieranie pliku do którego zawartość będzie przekopiowana

		while (fin.get(ch) && !fin.eof())
		{
			fout << ch;
		}

		fin.close();
		fout.close();

		cerr << "Proces kopiowania przeszdl pomyslnie!\n";
	}
	
	else
	{
		cerr << "Za duzo argumentow do wywolania!\n";
	}


    return 0;
}

 

komentarz zamknięcia: Rozwiazanie w komentarzach do pytania: problemem byly polskie znaki
komentarz 25 września 2017 przez unknown Nałogowiec (39,560 p.)
Podajesz ścieżkę względną czy bezwzględną?
komentarz 25 września 2017 przez B0nkers Początkujący (310 p.)
bezwzględną
1
komentarz 25 września 2017 przez obl Maniak (51,300 p.)

U mnie działa i kopiuje. Ale taka jedna uwaga tablica argv ma zawsze co najmniej jeden element, który zawiera ścieżkę bezwzględną do twojego programu, więc warunek:

if (argc == 1)

nie ma sensu, bo ścieżka do jednego pliku jak jest podana to argv powinno mieć 2 elementy a nie 1

komentarz 25 września 2017 przez B0nkers Początkujący (310 p.)
Ok, to już nie wiem co jest źle, że u mnie nie działa. A jakie polecenia wpisałeś do wiersza poleceń?
komentarz 25 września 2017 przez B0nkers Początkujący (310 p.)

Dobra już wiem dlaczego u mnie nie chciało wczytać tego pliku laugh. Po wielu próbach ostatecznie udało się mi to rozwikłać. Po prostu w nazwie folderu, w którym były te pliki były polskie znaki i po usunięciu od razu zaczęło śmigać

komentarz 26 września 2017 przez niezalogowany
Uwaga na boku: przy otwieraniu pliku do zapisu, tutaj fout - powinieneś też zrobić err checka na otwarcie.

Powód: możesz nie mieć wystarczajacych uprawnień do jego stworzenia.

Przykład: spróbuj skopiować jako standard user plik do folderu systemowego

Podobne pytania

+1 głos
1 odpowiedź 620 wizyt
pytanie zadane 21 kwietnia 2021 w Systemy operacyjne, programy przez Anonim64 Nowicjusz (150 p.)
0 głosów
0 odpowiedzi 222 wizyt
pytanie zadane 11 maja 2020 w Inne języki przez kondzix_ez Obywatel (1,930 p.)
0 głosów
1 odpowiedź 489 wizyt
pytanie zadane 3 grudnia 2019 w Systemy operacyjne, programy przez Makren321 Nowicjusz (160 p.)

93,395 zapytań

142,389 odpowiedzi

322,567 komentarzy

62,753 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...