Napisać program odwracający plik tekstowy plik.txt. Pierwszym wierszem wyjściowym ma być ostatni wiersz pliku wejściowego, drugim – przedostatni itd. Założyć, że wiersze nie przekraczają 255 znaków.
Wykorzystane – listy dwukierunkowe.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #include <stdio.h> #include <stdlib.h> typedef struct a{ char a[255]; struct a *next; struct a *prev; } strk; void wstaw(strk *, char[255]); // wstawienie na koniec int main() { strk a; strk* wsk=&a; strk* head=&a; wsk->next=NULL; wsk->prev=NULL; strcpy(wsk->a, ""); int i=0; char f[255]; //zmienan pomocnicza FILE* plik = fopen("c://plik.txt", "r");//otwirramy plik while(!feof(plik)) { fscanf(plik, "%s\n", f);// wczytujemy kazda linie i++; wstaw(wsk, f);// i wrzucamy ja do listy na koniec } while(wsk->next!=NULL)//przesuwamy liste na koniec { wsk=wsk->next; } while(i>0)//wyswietlamy tyle elementow ile ma linii plik ze wzgledu na 1 element listy ktory stworzylem statycznie { printf("%s\n", wsk->a); wsk=wsk->prev; i--; } return 0; } void wstaw(strk *a, char co[255]){ while(a->next != NULL) { a=a->next; } strk *nowy = (strk*) malloc(sizeof(strk));//nowy element w pamiec strcpy(nowy->a,co);// wartosc przpisana nowy->next=NULL;// wskaznik przypisany do NULL nowy->prev=a; a->next=nowy; // podlaczamy nowa do starej } |
Mateusz Mazurek