[c++]wczytywanie danych z pliku - tworzenie macierzy

Fst
Użytkownik
Użytkownik
Posty: 6
Rejestracja: 17 mar 2012, o 13:03
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 2 razy

[c++]wczytywanie danych z pliku - tworzenie macierzy

Post autor: Fst »

Witam

mam następujący plik macierz.txt w którym są oddzielone spacjami liczby z macierzy:

Kod: Zaznacz cały

3 -1 12 36 41
 2 -4 4 7 11
 -3 -2 0 0 10
 12 -7 -1 -1 0
 15 12 17 -6 -8
I mam dziwny problem:

W pliku macierz txt tylko pierwszy wiersz zaczyna się od liczby, a każdy kolejny musi zacząć się od spacji bo inaczej program gubi pierwszy element z danego wiersza.

Może najlepiej będzie jak załączę screen.

Co może być tego przyczyną?

Ostatnio zmieniony 26 mar 2015, o 08:26 przez Fst, łącznie zmieniany 1 raz.
Awatar użytkownika
Dasio11
Moderator
Moderator
Posty: 10222
Rejestracja: 21 kwie 2009, o 19:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 40 razy
Pomógł: 2361 razy

[c++]wczytywanie danych z pliku - tworzenie macierzy

Post autor: Dasio11 »

Instrukcja getline(we,liczba,' '); wczytuje z we aż napotka spację, a twój plik wygląda tak:

Kod: Zaznacz cały

"3 -1 12 36 41\n2 -4 4 7 11\n-3 -2 0 0 10\n12 -7 -1 -1 0\n15 12 17 -6 -8\n"
gdzie '\n' oznacza znak nowej linii. W związku z tym, kiedy wskaźnik pliku wskazuje na liczbę 41 pod koniec pierwszego wiersza, ta instrukcja pobierze do zmiennej liczba taki napis: "41\n2". Następnie funkcja atoi zignoruje pierwszy niepasujący znak '\n', czyli nie dojdzie do części zawierającej 2, więc zwróci tylko 41.

Jeśli natomiast na początku linii są spacje, to wynik czytania będzie inny: 41\n i następnego 2, czyli tak jak ma być.
ODPOWIEDZ