• 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

0 głosów
908 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ź 895 wizyt
pytanie zadane 21 kwietnia 2021 w Systemy operacyjne, programy przez Anonim64 Nowicjusz (150 p.)
0 głosów
0 odpowiedzi 273 wizyt
pytanie zadane 11 maja 2020 w Inne języki przez kondzix_ez Obywatel (1,930 p.)
0 głosów
1 odpowiedź 554 wizyt
pytanie zadane 3 grudnia 2019 w Systemy operacyjne, programy przez Makren321 Nowicjusz (160 p.)

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,139 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2459p. - CC PL
  9. 2296p. - Maurycy W
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1494p. - ssynowiec
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...