[C++] wczytywaie danych z pliku txt do bufora.
Ostatnio zmodyfikowano 2015-12-29 18:33
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
|
|
darko202 |
» 2015-12-28 12:48:41 * stosujesz czytanie bufora o pewnej długości z pliku a potem to wyświetlasz np. 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ę. |
|
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.
|
|
« 1 » |