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

Odczyt z pliku txt, zapis do pliku binarnego

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
1,644 wizyt
pytanie zadane 3 kwietnia 2017 w C i C++ przez Jedyn Obywatel (1,200 p.)

Witam, mam problem z zadaniem, program ma otwierać plik .bin oraz plik .txt, pobierać dane z txt i zapisywać je do .bin. Ktoś mógłby mi pomóc zrobić taką funkcję?
Napisałem coś takiego ale to nie za dużo ma raczej wspólnego z zapisem do pliku binarnego.
P.S k = ((int)a)-1; jest dla tego, ponieważ w zadaniu mam dekrementować otrzymany znak ASCII o 1.

void test()
{
	ofstream plik("kodowanie.bin", std::ios::binary);
	fstream pliki("dane.txt", std::ios::in);
	int k;
	char a;
	while (pliki.get(a))
	{
		k = ((int)a)-1;
		plik.put(k);
		cout << k << endl;
	}
	plik.close();
	pliki.close();
		

}

 

komentarz 3 kwietnia 2017 przez tangarr Mędrzec (155,140 p.)
Wewnątrz pętli wczytujesz 1 bajt (char) a do drugiego pliku zapisujesz 4 bajty (int)
komentarz 3 kwietnia 2017 przez Jedyn Obywatel (1,200 p.)

Właśnie chciałbym wczytać znak, pobrać jego kod ascii i zapisać binarnie. Czyli jakbym mógł to zrobić?  Coś takiego? :

 

void test()
{
	ofstream plik("kodowanie.bin", std::ios::binary);
	fstream pliki("dane.txt", std::ios::in);
	int k;
	char a;
	while (pliki.get(a))	//przepisuje normalny tekst 
	{
		
		//plik.put(a);
		plik.write((char*)&a, sizeof a);
		cout << a << endl;
	}
	plik.close();
	pliki.close();
		

}

 

komentarz 3 kwietnia 2017 przez tangarr Mędrzec (155,140 p.)
Zapomnij to co napisałem. Funkcja put przyjmuje chara, więc liczba k zostanie obcięta do jednego bajta. Twój pierwszy kod powinien działać.
Plik wynikowy (pomimo że jest plikiem binarny) powinien dać się otworzyć notatnikiem i wyglądać na zwyczajny plik tekstowy.
komentarz 3 kwietnia 2017 przez Jedyn Obywatel (1,200 p.)
Właśnie wygląda jak zwykły tekst, to tak ma być? Z tego co mi mówiono to miały być jakieś krzaczki i ciągle myślę ,że robię gdzieś błąd.
komentarz 4 kwietnia 2017 przez tangarr Mędrzec (155,140 p.)
-1 to zbyt mała różnica, żeby zobaczyć krzaczki. Tylko spacja, tabulacja i nowa linia mogą dać ciekawsze efekty. Dużo ciekawiej by było gdybyś dodał liczbę z przedziału 50-100
komentarz 4 kwietnia 2017 przez mbabane Szeryf (79,260 p.)
edycja 4 kwietnia 2017 przez mbabane

Czesc, dam Ci jeszcze jedna wskazowke:

nazywajac zmienne staraj sie dobierac nazwy tak zeby bylo widac od razu ze jest to inna zmienna - popatrz nazwales zmienne plik oraz pliki  za kazdym razem kiedy sie analizuje kod trzeba wrac do miejsca deklaracji i zerkac, ktora jest ktora, (ewentualnie klopotac glowe tym zeby zapamietac co jest co) a wystarczylo np. cos takiego:
plikTxt, plikBin. 

Odpowiednio nazwane zmienne, procz poprawienia komfortu czytania kodu, znaczaco ulatwiaja poszukiwanie bledu, a nawet moga sie przyczynic do powstawania ich mniejszej ilosci w trakcie tworzenia.

komentarz 4 kwietnia 2017 przez Jedyn Obywatel (1,200 p.)
Tak wiem, po prostu robiłem już kolejną z rzędu podobną funkcje i tak na szybko dodałem tylko i. Normalnie w zadaniach docelowo stosuję anglojęzyczne słowa. Ale dzięki :).

1 odpowiedź

0 głosów
odpowiedź 4 kwietnia 2017 przez mokrowski Mędrzec (156,480 p.)
edycja 4 kwietnia 2017 przez mokrowski

Oj.. "zakałapućkałeś się" :-)

    char ch;
    while(iFile >> ch) {
        oFile << static_cast<char>(--ch);
    }

 

Podobne pytania

0 głosów
0 odpowiedzi 1,886 wizyt
0 głosów
1 odpowiedź 2,265 wizyt
pytanie zadane 27 września 2017 w C i C++ przez B0nkers Początkujący (310 p.)
+1 głos
1 odpowiedź 1,337 wizyt

93,190 zapytań

142,205 odpowiedzi

322,032 komentarzy

62,518 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2817p. - dia-Chann
  2. 2769p. - Łukasz Piwowar
  3. 2759p. - Łukasz Eckert
  4. 2738p. - CC PL
  5. 2704p. - Tomasz Bielak
  6. 2678p. - Łukasz Siedlecki
  7. 2666p. - rucin93
  8. 2485p. - Marcin Putra
  9. 2418p. - Michal Drewniak
  10. 2367p. - Adrian Wieprzkowicz
  11. 2317p. - Mikbac
  12. 2239p. - Michał Telesz
  13. 2156p. - Anonim 3619784
  14. 1733p. - rafalszastok
  15. 1628p. - Dominik Łempicki (kapitan)
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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...