[c++]Czytanie z pliku.

0

Witam,
Potrzebuje napisac program ktory czyta z pliku.Znalazlem rozne texty na ten temat w internecie jednakze nic nie pomaga :(.Poradzcie co jest w programie nie tak.Na poczaatku wypelniam bufor zerami by nie znajdowaly sie w nim przypadkowe elementy.PLik1 to pik tekstowy zawierajacy uporzadkowane liczby oddzielone spacjami...

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream plik;
    char bufor[256];
    for(int i=0; i<256; i++)
    {
            bufor[i]=0;
    }
    plik.open("plik1");
    plik.getline(bufor, 256);
    for(int i=0; i<256; i++)
    {
       cout << bufor[i] << " ";
    }
    getchar();
}
0

Program jest poprawnie napisany. Jedyny błąd jaki wypatrzyłem to

plik.open("plik1");

Jeśli plik ma być tekstowy to powinien mieć rozszerzenie plik.open("plik1.txt");

0

Program jest ok, nie musi byc zadnego rozszerzenia, przeciez nie od tego zalezy czy to jest plik tekstowy, tylko od trybu otwarcia pliku (domyslny - takiego uzywasz - jest tekstowy wlasnie).

Ten kawalek kodu powinien wcytac liczby z plik do tablicy (swoja droga to musisz byc pewien tego, ze wczytywac liczby chcesz do tablicy char?):

int i = 0;
while(plik >> tablica[i++]);

Jesli w pliku jest wiecej niz 256 liczb to nie zmieszcza sie w tablicy i moze byc nieladnie. Pozdro

0

Po pierwsze jak otiwierasz strumien to go zamnknij, to taki ladny zwyczaj :)

Po drugie nie latwiej uzyc stringa zamiast tablicy znakow ( bo przeciez piszesz w c++ a nie c). Wtedy twoj programmoglby wygladac tak :

#include <iostream>
#include <fstream>
#include <string> 

using namespace std;

int main()
{
    ifstream plik;
    string napis;
    plik.open("plik.txt");
    getline( plik, napis);
    plik.close();
    cout << napis<<endl;
    system("pause");
}

I nie masz zabawy z ustawianiem zer.

pozdrawiam
Assassin.

0

Nie trzeba zamykac strumienia poniewaz destruktor sam to robi (no chyba ze musimy zamknac i otworzyc ponownie w celu ponownego odczytywania z inego pliku czy cos w tym stylu), jednak zgodze sie z tym ze zamykanie to raczej dobry zwyczaj.

0

Program jest ok, nie musi byc zadnego rozszerzenia, przeciez nie od tego zalezy czy to jest plik tekstowy, tylko od trybu otwarcia pliku (domyslny - takiego uzywasz - jest tekstowy wlasnie).

Jesli wyslij_sms chcial odczytac plik tekstowy (a tak pisal w swoim poscie), a jego plik przy otwarciu miał postac plik.open("plik"), to na pewno plik sie nie otworzy. Jesli plik jest z rozszerzeniem *.txt, to przy otwarciu pliku musisz podac takze to rozszerzenie.
Ali G sprawdz to za pomoca

if(!plik)
    {
    cout<<endl<<"Blad otwarcia pliku";
    getchar();
    return 0;
    }

</b>

0

Gege a sprawdzales czy to na pewno nie zadziala bo jakos u mnie w DEVie nie ma zadnego problemu i sie otwiera :)

Pozdrawiam
Assassin

0

Sprawdzalem w C++ Builderze 6 i jesli nie ma rozszerzenia i dam warunek if(!plik) ... to wyswietla sie moj komunikat. Czyli akurat tu rozszerzenie jest wazne.

0

Na pocieszeni moge dodac ze Dev jest w mnijeszoci, to znaczy ze w Visualu tez sie nie otwiera.

Assassin.

0

Mi nie chodzilo o to ze ma podawac nazwe pliku bez rozszerzenia, tylko o typ. Jesli mial napisane "plik", to mysle ze taki jest ten plik - bez rozszerzenia. Jesli plik ma jednak rozszerzenie to nie ma bata - nie pojdzie nigdzie - ani w Devie, ani Visualu, ani niczym innym.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0