C, skakanie po plikach nie dziala

0

Witam. Potrzebuje pomocy z programem. Musze stworzyc program który pobiera z pliku liczbe i przesuwa się w pliku o tyle liczb ile wynosi pobrana wczesniej liczba (np. jeślli liczba to 5 to o 5 liczb do przodu a jeśli -1 to o 1 do tyłu) i tak do dopóki nie natrafi na 0. Dodam, że liczby są jedna pod drugą. Pomożecie??

0

Pewnie, w czym masz problem?

0

Nie wiem jak ma to wyglądać, próbowałem to sam zrobić przy uzyciu funkcji fseek ale pobiera tylko pierwsza liczbe i nie pobiera juz liczb z kolejnych linii. Zatrzymuje się na pierwszej. Wiem ze mozna to zrobić z fseek i rewind ale nie wiem jak.

0

Wczytaj wszystkie do tablicy i skacz po tablicy.

0

A mógłbyś napisać jak to robić bo jestem jeszcze w tym całkowicie zielony?

0

Wczytaj wszystkie liczby w pętli wywołując fscanf. Po każdym udanym odczycie dodawaj do tablicy - na chwilę obecną zainteresuj się malloc i realloc i załóż, że realloc w pętli jest akceptowalnym rozwiązaniem.

0
TomekAtomek napisał(a):

A mógłbyś napisać jak to robić bo jestem jeszcze w tym całkowicie zielony?

No po co się porywasz z motyką na słońce? Naucz się jak pisać program typu hello world, wczytwyanie znaków itp. Potem dopiero rób to co opisujesz. Chyba, że jesteś kolejnym, który ma oddać zaliczenie i się obudził z nauką miesiąc przed? xD

0

A czy dałoby radę to zrobić bez tego tylko z operacją na pliku uzywając fseek i rewind?

0

Tak, ale to znacznie więcej roboty, bo masz liczby jako ciągi znaków, a nie liczby. Zresztą wtedy wygodniej by było raczej zmapować plik na pamięć...

0

W pliku jest 15 liczb i kursor w pliku przesuwa sie o tyle ile wynosi dana liczba. Konczy działanie gdy trafi na 0.

1
TomekAtomek napisał(a):

Witam. Potrzebuje pomocy z programem. Musze stworzyc program który pobiera z pliku liczbe i przesuwa się w pliku o tyle liczb ile wynosi pobrana wczesniej liczba (np. jeślli liczba to 5 to o 5 liczb do przodu a jeśli -1 to o 1 do tyłu) i tak do dopóki nie natrafi na 0. Dodam, że liczby są jedna pod drugą. Pomożecie??

Zwróć uwagę, że przesuwać się masz o ilość liczb, a nie ilość bajtów! Każda liczba może mieć różną długość (zakładając, że masz plik tekstowy), więc skakanie po pliku do konkretnej liczby jest bardzo trudne. Sam sobie utrudniasz zadanie.

Zapomnij o kursorze i zrób jak ci @kq pisał:

  1. wczytaj wszystkie liczby do tablicy o dynamicznej wielkości
  2. korzystając z tablicy wykonaj te skoki.

Można to zrobić skacząc po pliku (da się), ale jest to głupie rozwiązanie, bo zajmie ci 10 razy tyle kodu i będzie wolniejsze.
No chyba, że ten plik z danymi ma +5GB (wątpię).

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