Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] wczytywaie danych z pliku txt do bufora.

Ostatnio zmodyfikowano 2015-12-29 18:33
Autor Wiadomość
ziver
Temat założony przez niniejszego użytkownika
[C++] wczytywaie danych z pliku txt do bufora.
» 2015-12-28 08:44:05
Zaczynam przygodę z programowaniem i mam do napisania program - quiz, który wczytuje pytania z pliku txt.
Problem pojawia się przy kompilacji. Na ekranie różnych maszyn robią się "krzaczki" w losowo wybranych pytaniach.
Domowy laptop wczytuje dane ok do III rundy. Firmowy sprzęt odmawia współpracy w pierwszym pytaniu.
Jakieś sugestie?

Link do pliku z quiz'em na gogolach: https://drive.google.com/folderview?id=0BxJzMu6qBw2KdGFrYkViajQtSWs&usp=sharing

Link do "krzaków": http://s4.postimg.org/ng9ft4if1/fst.png

P-142453
darko202
» 2015-12-28 12:48:41
*
stosujesz czytanie bufora o pewnej długości z pliku a potem to wyświetlasz    
np.
C/C++
soisk.read( bufor_2, 60 );
cout << bufor_2 << endl;

1. nie zastanawiasz się czy proces czytania się udał
2. najpierw rezerwujesz pamięć na bufor, a są w nim różne losowe znaki

potem to wszystko wyświetlasz i dziwisz się
że są te dziwne znaki, a program zachowuje się w sposób dziwny.


*
proponuję, abyś zapoznał się z techniką debugowania programu
to bardzo Ci ułatwi pracę.


P-142457
ziver
Temat założony przez niniejszego użytkownika
» 2015-12-29 18:33:00
Tak, bufor jest tablicą typu char, czyli jednobajtową (-128 - 127). Czyli pierwszy bufor długości 96 mieści się w zakresie.
Wyliczenie pokazuje zajęte 96 jednostek.
Czyli co? Znaki w buforze typu 'char' nie są traktowane jednakowo jako zwykły ciąg, niezależnie, czy są to litery, cyfry i inne znaki specjalne?

Dziwne to jest, owszem, ale bardziej dziwi mnie, że różne maszyny widzą błąd w różnych miejscach. Jedna widzi go na początku, druga dochodzi dalej. Maszyny są różne sprzętowo. Ta, na której krzaczy od pierwszego pytania ma więcej pamięci.

Powtarzam, nie jestem programistą. Nie mam cierpliwości. (: Nie piszę też tego ustrojstwa na prywatny użytek, tylko z konieczności.

Ale, gdy zmieniam buforki typu char na funkcję getline i pętlę, pobierającą kolejne linie kodu, niby jest ok. Posprawdzam na innych maszynach. Gdyby w getline wywaliło, co może być przyczyną? Bufor getline jest stringiem.
P-142553
« 1 »
  Strona 1 z 1