Avaris Temat założony przez niniejszego użytkownika |
Zapisywanie string do tablicy » 2017-05-18 22:21:41 Cześć, Mam problem z zapisaniem tekstów do tablicy, jest to jedno z zadań maturalnych, które muszę rozwiązać. Napisy, które odczytuje z pliku to 1000 pa, z których każdy napis ma długośc od 2 do 20 znaków, składających się z liter (A,B,C,D,F,G,H,J). Każda para napisów jest opisana w oddzielnym wierszu a napisy są oddzielone pojedynczą spacją. Odczytałem dane z pliku i próbuję je zapisać do tablicy string, jednak po uruchomieniu programu, wiesza się on prawdopodobnie na tej pętli. Wpisując anagram[1], chcę sprawdzić czy program zapisze choć jeden tekst. Proszę o sprawdzenie kodu i ewentualne instrukcje, pozdrawiam! #include <iostream> #include<fstream> #include<cstdlib> #include<cstring>
using namespace std; void zad1() { ifstream fin( "zadanie_domowe/Dane/68/dane_napisy.txt" ); ofstream fout( "wyniki_anagramy.txt" ); string anagram[ 1000 ]; int k = 0; while( !fin.eof() ) { fin >> anagram[ k ]; k++; } fout << "Zad68.1\n"; fout << "anagram nr.1=" << anagram[ 1 ] << endl; fin.close(); fout.close(); }
int main() { zad1(); return 0; }
|
|
karambaHZP |
» 2017-05-19 07:32:57 int k = 0; while( k < 1000 && fin >> anagram[ k++ ] );
Tak powinno być bezpieczniej. Użycie metody eof() może nie działać zgodnie z twoimi oczekiwaniem. Na wszelki wypadek warto przerwać wczytywanie gdy dotrzemy do końca tablicy. |
|
Avaris Temat założony przez niniejszego użytkownika |
» 2017-05-19 11:23:32 Zrobiłem to tak jak napisałeś. Lecz teraz gdy plik do zapisu został otworzony to po otwarciu go widnieje tylko Zad68.1; anagram nr.1= po znaku "=" nie zostaje wyświetlona żadna z par napisów do sprawdzenia.
|
|
karambaHZP |
» 2017-05-19 11:39:55 Wrzuć aktualny kod. Nie sprawdzasz, czy plik jest poprawnie otwarty. Sprawdź czy plik źródłowy nie jest pusty. |
|
Avaris Temat założony przez niniejszego użytkownika |
» 2017-05-19 11:56:09 Wszystko się wyjaśniło. Omyłkowo wpisałem błędną ścieżkę pliku, mam natomiast jeszcze jedno pytanie. Można zapisać w jednej "szufladce" tablicy cały wers, np. "AIHAHGHBEAFJAJDI HGIHFEHHJGBCBGD", czy funkcja będzie zapisywała tylko pierwszą część, do spacji, w tym wypadku "AIHAHGHBEAFJAJDI"? |
|
karambaHZP |
» 2017-05-19 12:07:24 Można. Zamiast fin >> anagram[ idx ] użyj std::getline( fin, anagram[ idx ] ) . Dodaj również plik nagłówkowy <string>. Natomiast <cstring> oraz <cstdlib> są nieużywane. |
|
Avaris Temat założony przez niniejszego użytkownika |
» 2017-05-19 12:10:47 Super, dzięki za pomoc! |
|
« 1 » |