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

Sczytywanie z pliku znak po znaku, End of line

VPS Starter Arubacloud
0 głosów
293 wizyt
pytanie zadane 23 kwietnia 2017 w C i C++ przez Rumci Nowicjusz (220 p.)
Witam,

Mam głupi problem, ale mam sczytać plików liczby które są w osobnych liniach i wrzucić je do stosu. Problem w tym, że nie wiem jak, przy pomocy char'ów wykryć, znak końca linii. Nigdy się tym nie przejmowałem, bo używałem string.
Mógłby mi to ktoś zaprezentować na przykładzie:

char sczytany_znak;
if( sczytany_znak == znak_konca_lini) cout << "Znak końca linii. \n";

 

Dziękuję z góry :)
komentarz 24 kwietnia 2017 przez Satpol Początkujący (310 p.)
Spróbuj if (char == '\n') lub if (char == '\0')

2 odpowiedzi

+1 głos
odpowiedź 24 kwietnia 2017 przez Knayder Nałogowiec (37,640 p.)
Sczytać xd
komentarz 24 kwietnia 2017 przez Knayder Nałogowiec (37,640 p.)
A tak serio, to daj dokładną kopię pliku z którego chcesz sczytać dane. xd
1
komentarz 24 kwietnia 2017 przez Knayder Nałogowiec (37,640 p.)
Dobra, jednak jestem debilem. Sczytac jest poprawnie.
komentarz 24 kwietnia 2017 przez Rumci Nowicjusz (220 p.)
Nie wiem co masz do "sczytać" ale tonpoprawna pisownia, sprawdzałem 2 razy :)

 

Głownie chodzi mi o to że mam 2 pliki tekstowe, zawierające jakieś liczby(ogromne liczby np. 10^100) i mam je do siebie dodać, przy użyciu stosu i zapisać do 3 pliku.

 

Więc wymyśliłem, że będę je char'em sczytywał i po kolei umieszczal w stosie. Tak powstaną mi 2 stosy z 2 liczbami, tylko te liczby będę miał już ustawione na jedności dziesiątki setki.... Tak ułożone liczby dodam(pamiętając o 8+3= 11, więc jeden dalej) i po kolei będę wpisywal do pliku. Po wpisaniu do pliku liczby zajmę, się kolejna dwojką.

 

I do tego mi potrzebny jest char. Zawartość pliku nie jest istotna oby bylybto liczby naturalne.
komentarz 24 kwietnia 2017 przez Knayder Nałogowiec (37,640 p.)
Wiem, sczytac jest ok, nawet napisałem wyżej że jestem debilem :D

Myślę że najłatwiej będzie getlinem sczytać do stringów kolejne linie. A string już można traktować jak tablicę.

Ewentualnie std::string::c_str() zwróci ci tablicę charów. (const char *)

Potem możesz już działać jak uważasz.

Linki:

c_str() http://www.cplusplus.com/reference/string/string/c_str/

getline() http://cpp0x.pl/kursy/Kurs-C++/Obsluga-plikow/305

Pozdrawiam :)
komentarz 24 kwietnia 2017 przez Rumci Nowicjusz (220 p.)
Niezauważyłem wcześniejszego komentarza o debilu, bo pisałem swój komentarz :p Sorki :)

Co do string to wiem że jest taka opcja, ale właśnie mnie ciekawi ten char który jest trudniejszy :)

Więc pytanie: Czy da się to zrobić przy użyciu wyłącznie char'ów?

I drugie pytanie: Jak przy pomocy char'a (lub czegoś innego, nie czytajacego całej linii) wykryć koniec linii?

Co co tego końca lini to próbowałem już porównywać do kodu ASCII 13,  10, a nawet 3? próbowałem też znak==ETX lub znak ==CR, ale działa tylo z znak ==EOL.

Jeśli jeat taka możliwość to chciałbym pewniaka bo już od 2h mecze się nad sprawdzaniem różnych możliwości :p
komentarz 24 kwietnia 2017 przez Knayder Nałogowiec (37,640 p.)
Skoro znak endOfLine działa, to w czym rzecz? Nie rozumiem jaki dokładnie masz problem.

Jeżeli chodzi o pobranie całego pliku do tablicy charów, to jest to proste. Wyciągasz ją po prostu z bufora strumienia.

http://www.cplusplus.com/reference/streambuf/streambuf/sgetn/

Potem pętlą możesz szukać znaków EOL.

To jak zrobisz to dodawanie zależy już od ciebie. Jak wyciągnąć chary, masz w linku który podesłałem.

PS. Polecam zaglądać do dokumentacji. Wszystko tam jest fajnie opisane.

Pozdrawiam.
komentarz 24 kwietnia 2017 przez Rumci Nowicjusz (220 p.)
Przepraszam, telefon mi poprawił pisownie. "działa tylko "znak == EOF" bo jak wpisuje "znak == EOL" to mi mówi że EOL nie jest zadeklarowane w przestrzeni nazw. Sorki.
komentarz 25 kwietnia 2017 przez Knayder Nałogowiec (37,640 p.)
Shiro już ci napisał że EOL to '\0'
0 głosów
odpowiedź 24 kwietnia 2017 przez Shiro Stary wyjadacz (10,300 p.)
Z tego co wiem to dla stringa ostatni znak to NULL lub jak kto woli \0 więcej o tym tutaj:
https://www.youtube.com/embed/ZGtdSv7Ktt4 1m43s

Być może ta informacja będzie dla Ciebie pomocna. Możesz posłużyć się pomocniczym stringiem, nie do końca rozumiem jakie jest zadanie programu więc jeżeli to rozwiązanie jest nie możliwe napisz dlaczego.

Pozdrawiam Shiro!

Podobne pytania

0 głosów
1 odpowiedź 1,248 wizyt
0 głosów
2 odpowiedzi 1,989 wizyt
0 głosów
1 odpowiedź 733 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...