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

[C++] Wczytywanie danych z pliku

Ostatnio zmodyfikowano 2010-06-12 14:01
Autor Wiadomość
adaxks
Temat założony przez niniejszego użytkownika
[C++] Wczytywanie danych z pliku
» 2010-06-12 12:35:36
Mój problem dotyczy wczytywania słów z pliku.
Kod który ułożyłem.
C/C++
#include<stdio.h>
#include<string>
#include <fstream>
using namespace std;
int main() {
    char zmienne[ 200 ];
   
    {
        int a;
        ifstream plik( "slownik.txt" );
        for( a = 0; a < 200; ++a )
             plik >> zmienne[ a ];
       
        printf( "%c", zmienne[ a ] );
    }
    getchar();
}
Wyświetla pojedynczą literę "ś" a w slowniku.txt jest cały wyraz.
Gdzie popełniam błąd?
Jak powinien wyglądać kod który wczytuje kolejne słowa (zakończone enterem czyli wiersze) do tablicy?
I czy jest możliwość aby program wczytywał każdą literę wiersza do tablicy a nie całe słowa?
jestem jeszcze zielony w tych tematach, więć proszę o obszerne wyjaśnienie.
nie odsyłajcie mnie do samouczków bo już je widziałem.
P-17941
ison
» 2010-06-12 12:40:57
char to jest pojedynczy znak, nie możesz całego slowa podstawić pod jeden znak typu char. Jeśli chcesz wczytać całe słowa to musisz wczytywać tablice charów.
C/C++
#include <cstdio>
#include <fstream> //biblioteka potrzebna do wczytywania z pliku
#include <conio.h> //biblioteka potrzebna do _getch();
//biblioteka string nie jest potrzebna gdyż i tak korzystasz z tablicy charów a nie STL'owych stringów

using namespace std;

char zmienne[ 200 ][ 200 ]; //gdy deklarujesz zmienne na globalu (poza funkcjami) to są od razu wyzerowane (nie ma w nich dziwnych znaczków)

int main()
{
    ifstream plik( "slownik.txt" );
    for( int a = 0; a < 200; ++a )
    {
        plik >> zmienne[ a ];
        printf( "%s\n", zmienne[ a ] ); //%c wypisuje jeden znak char a %s wypisuje tablice charów, w tym przypadku wypisze zmienne[a][0],zmienne[a][1],zmienne[a][2] itd... tak aby ułożyło się słowo, \n to znak nowej linii (chyba wiesz)
    }
    _getch();
}

tym sposobem co wczytujesz - program nie odróżnia spacji od entera, jak napotka którekolwiek z wyżej wymienionych to wczytuje nowe słowo (da się to zmienić, nigdy się nie zastanawiałem jak, ale pewnie się da :p)

apropo błędów w twoim programie to zwyczajnie po forze nie miałeś klamry która by obejmowała i wczytywanie znaku i od razu wypisywanie go (oprócz tego wcześniej wspomnianie to że deklarowałeś tablicę w funkcji i była zapełniona 'dziwnymi' znaczkami ;))
P-17942
adaxks
Temat założony przez niniejszego użytkownika
» 2010-06-12 13:46:21
Wielkie dzięki wszystko działa jak należy.

Mam jeszcze pytanie trochę z innej beczki.
muszę napisać jeszcze algorytm poprawiający literówki w słowach (litera za dużo/za mało/ inna litera np dla kot może być krot, ot, kut)

Problem polega na tym że o ile "kut" mogłyb zamienić przyrównywaniem każdej litery i większością poprawnych liter wybrać kot to dla "krot" i "ot" nie mam żadnego pomysłu.
P-17946
filipesq
» 2010-06-12 14:01:20
Załóż inny temat...
P-17949
« 1 »
  Strona 1 z 1