Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C] odczyt i zapis do struktury z pliku

blue_17 27 Lut 2012 00:09 2993 6
  • #1 27 Lut 2012 00:09
    blue_17
    Poziom 32  

    Witam

    Mam problem z odczytem z pliku plik wejściowy wygląda następująco

    Code:
    1 2 3
    
    4 5 6
    7 8 8
    9 10 11
    12 13 14


    plik wyjściowy

    Code:
    4064048 4064048 0 
    
    0 0 0
    0 0 0


    Niestety powinien wyglądać podobnie ja wejściowy :|

    Tak wygląda kod programu - kompilator to GCC
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Niestety jakiś czas siedzę na tym i nie mogę dojść do tego dla czego nie chce czytać z pliku

    Proszę o rzucenie bardziej doświadczonym okiem :)

    Pozdrawiam

    0 6
  • Pomocny post
    #2 27 Lut 2012 07:15
    krru
    Poziom 32  

    blue_17 napisał:
    Witam

    Mam problem z odczytem z pliku plik wejściowy wygląda następująco

    Code:
    1 2 3
    
    4 5 6
    7 8 8
    9 10 11
    12 13 14


    plik wyjściowy

    Code:
    4064048 4064048 0 
    
    0 0 0
    0 0 0


    Niestety powinien wyglądać podobnie ja wejściowy :|

    Tak wygląda kod programu - kompilator to GCC
    Kod: c
    Zaloguj się, aby zobaczyć kod



    W zastosowaniu do plików tekstowych to nie jest błąd, jednak ogólnie, w takich konstrukcjach
    zmienna znak powinna być int-em.

    blue_17 napisał:

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Do scanf i pochodznych trzeba przekazywać wskaźniki - &(TablicaAt[i].x) itp.
    Sprawdziłbym też wynik fscanf - tutaj powinien wynosić 3.

    blue_17 napisał:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    0
  • #3 27 Lut 2012 10:03
    blue_17
    Poziom 32  

    1 Scanf działa poprawnie podejrzewam że wszystko wynika z tego że czytam i kursor prawdopodobnie ustawia się na końcu pliku i potem niema już nic do wczytania

    Czy jest jakiś sposób żeby go z powrotem ustawić na początku :?:

    z & przy polach w tablicy również próbowałem i niestety nic to nie zmieniło

    Pozdrawiam

    0
  • Pomocny post
    #4 27 Lut 2012 13:31
    the_fifth_horseman
    Poziom 32  

    blue_17 napisał:
    Czy jest jakiś sposób żeby go z powrotem ustawić na początku :?:
    Użyj fseek albo prościej rewind.

    Cytat:
    z & przy polach w tablicy również próbowałem i niestety nic to nie zmieniło
    Gdzieś masz błąd, bo powinno zmienić. Pokaż jak wygląda twój aktualny kod i jak próbujesz w nim używać &

    0
  • #5 27 Lut 2012 20:19
    blue_17
    Poziom 32  

    Dziękuje za wskazówki obydwie były kluczowe faktycznie tak jak podejrzewałem próbowałem odczytaj dane z poza końca pliku, po policzeniu wierszy należało przewinąć do początku przed wczytywaniem :)

    Po drugie jak kolega doradzał należało dodać & za co jestem mu wdzięczny :)

    Funkcje jaką użyłem do przewijania to rewind - bardzo pożyteczne :)

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Ewentualnie prosił bym o poddanie jakiegoś pomysłu na zaczęcie czytania od wybranej lini bo nie wiem jak to zrealizować, bo może się zdarzyć że będę miał np 2 linie tekstu na początku które nie będą mi do niczego potrzebne.

    Pozdrawiam i dziękuję :)

    0
  • #6 27 Lut 2012 23:27
    the_fifth_horseman
    Poziom 32  

    Najoszczędniej jest skorzystać z fgetc pobierając kolejne znaki dopóki nie pobierzesz poszukiwanego (lub napotkasz EOF). Cztery linijki kodu.

    Jeżeli nie masz zapędów do oszczędzania pamięci, możesz po prostu użyć tablicy charów i fscanf albo fgets.

    0
  • #7 29 Lut 2012 22:13
    blue_17
    Poziom 32  

    Wykorzystam fscanf ale może przerobie na getc :)


    Pozdrawiam

    0