• 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

Object Storage Arubacloud
0 głosów
603 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,280 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ź 321 wizyt
pytanie zadane 21 kwietnia 2021 w Systemy operacyjne, programy przez Anonim64 Nowicjusz (150 p.)
0 głosów
0 odpowiedzi 118 wizyt
pytanie zadane 11 maja 2020 w Inne języki przez kondzix_ez Obywatel (1,910 p.)
0 głosów
1 odpowiedź 410 wizyt
pytanie zadane 3 grudnia 2019 w Systemy operacyjne, programy przez Makren321 Nowicjusz (160 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...