Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Mały Problem. Odczytanie wyrazów z pliku w języku C++

07 May 2005 21:27 1292 7
  • Level 13  
    Witam. Jestem początkującym użytkownikem C++ jak widać ale powoli jadę do góry.
    Mam taki problem. Poniżej napisałem i przedstawiam prosty działający algorytm, który odczytuje z pliku tutaj o nazwie DANE.TXT i wypisuje kolejne ciągi znaków (narazie tylko pierwszy) za pomocą funkcji między punktem (1) a punktem (2). Waszym zadaniem jest dopisanie do tego algorytmu pętli typu !eof(), która będzie wykonywała operacje między punktami (1) i (2) od początku do końca pliku. Typ !eof lub jakaś inna funkcja zastępcza powinna działać z tym algorytmem. Ja próbowałem !eof !feof i innych -ale nie chciało działać, może coś źle robiłem? Proszę o wskazówki - chodzi mi tylko o odczytywanie kolejnych ciągów tekstowych z pliku najlepiej funkcją >>, gdyż później dopiszę funkcje kolejno przerabiające te ciągi. Najlepiej jeżeli pomożecie mi z przerobieniem mojego algorytmu i dodaniu funkcji wykonującej operacje między (1) a (2) od początku do końca pliku.
    Dziękuję.

    Quote:


    # include <fstream.h>
    # include <fcntl.h>
    # include <io.h>
    # include <stdio.h>
    # include <stdlib.h>

    void main(void)
    {
    ifstream plik;
    plik.open("F:/DANE.TXT");
    char ciag[20];

    // (1) Poczatek petli

    plik>>ciag;
    cout<<ciag<<"\n";

    // (2) Koniec petli

    plik.close();
    }


    przykładowa zawartość pliku DANE.TXT:
    Code:

    gdffagfdgfdg
    dfgdfgfdgf
    fgfdgfdgf
    ffgffg
    fdgfdgdfggfdgg
    fdgfdg
    fgf
    fdgfdgf
    fdgfd
    fggfdgfdgfd
    fdgdfgdf
    trtretretretre


    Mój kompilator to chyba wersja BC 4.5 for Windows (biblioteki .h )
    Proszę o wskazówki.
    Dziękuję z góry za pomoc. :)
  • Level 34  
    Może tak:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <iostream.h>
    //using namespace std;
    int main()
    {
    FILE *plik1,*plik2;
    char oneword[100];
    char *c;
    //int ile;

    plik1 = fopen("d:\qaq.txt", "r");// między " " wstaw path do pliku
    plik2 = fopen("d:\qaq1.txt", "w");//"r"-do odczytu
    if (fp1 == NULL)
    {
    printf("pliku nie znaleziono\n");getch();
    exit (EXIT_FAILURE);
    }

    do
    {
    c = fgets(oneword, 100, plik1); /* bierze jedną linię z pliku */
    if (c != NULL)
    //printf("%s", oneword); /* kieruje na monitor */
    cout<<oneword;

    } while (c != NULL); /* repeat until NULL */

    fclose(plik1);fclose(plik2);

    // return EXIT_SUCCESS;
    getch();
    }
    Dodatkowo tworzony jest na dysku 2 plik.Pliki muszą być z rozszerzeniem .txt
  • Level 13  
    Dzięki za koda (bardzo ciekawy ) przetestuję go i zobaczę ale bez pliku2. Tylko odczyt i tyle.

    A czy w moim algorytmie zadziała taka formułka?

    Code:
    while ( plik>>ciag ) cout << ciag<<endl;


    Spotkałem się z taką formułką. :)
    To jest wyciąganie z pliku danych aż nastapi błąd odczytu (koniec pliku)
    i kompilator sam zakończy proces. Czy jest to możliwe i czy przypadkiem nie trzeba dać jakieś funkcji "anty błędowych" że ja napotka taki błąd to program będzie chodził dalej i się nie zawiesi. Biore się do testowania :).
  • Helpful post
    Level 34  
    Jeżeli wystąpi bład otwarcia pliku,to program bez wykrycia tego błędu (bez tego kawałka kodu) sam zakończy swoje działanie,nie będzie wykonywał żadnych operacji.Ale jak dodamy ten kod,to nas poinformuje o przyczynie zakończenia działania. Nic nie stoi na przeszkodzie abyś przetestował dla wprawy tą formułkę.
  • Level 13  
    Dzięki wszystko działa :D
  • Level 16  
    a co to jest fp1 w tym kodzie?
  • Level 19  
    cos sie mi zdaje ze tam milo byc "plik1" zamiast "fp1"
  • Level 34  
    Tak jest, zamiast fp1 ma być plik1. Sorry!