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

Zapisywanie string do tablicy

Ostatnio zmodyfikowano 2017-05-19 12:10
Autor Wiadomość
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!
C/C++
#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;
}
P-161273
karambaHZP
» 2017-05-19 07:32:57
C/C++
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.
P-161281
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.
P-161288
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.
P-161292
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"?
P-161293
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.
P-161294
Avaris
Temat założony przez niniejszego użytkownika
» 2017-05-19 12:10:47
Super, dzięki za pomoc!
P-161295
« 1 »
  Strona 1 z 1