Witam
Chciałem aby funkcja zwracała mi dwie listy, więc dodatkowo stworzyłem dodatkową strukturę. Niestety w programie mam problem z jej wywołaniem. Jak mam to zrobic ?
int wybor1(){
int x=0;
printf("Witaj w moim programie :) \n\n\n Opcje : \n\n 1.Sprawdz sie\n 2.Edycja \n\n 0.Wyjscie\n");
scanf("%d",&x);
return x;
}
typedef struct list{
struct list *next,*prev;
char key[30];
}lista;
typedef struct lists{
lista lista_pierwsza;
lista lista_druga;
}listy;
void push(lista **head,char x[]){
lista *nowy=(lista*)malloc(sizeof(lista));
lista *tmp=(lista*)malloc(sizeof(lista));
strcpy(nowy->key,x);
nowy->next = NULL;
if(head) {
tmp=head;
while(tmp->next) tmp=tmp->next;
tmp->next=nowy;
nowy->prev = head;
}
else {
head=nowy;
tmp->prev=NULL;
}
}
void show(lista *head){
while(head->next) {
head=head->next;
printf("%s\n",head->key);
}}
listy tworzenie_list(){
FILE *plik;
listy nowy;
int c;
char z [2]= "";
char podstawa[30]="";
char k[30]= "";
lista *lista_ang=NULL,*lista_pol=NULL;
if ((plik=fopen("C:/test/test.txt", "r+"))==NULL) { //obsługa błędu otwarcia pliku
printf ("Nie mogę otworzyć pliku test.txt do zapisu!\n");
exit(1);}
while((c=fgetc(plik))!=EOF){
if ((c!='\t')&&(c!='\n')){
*z=c ;
strcat(podstawa,z);
}
else if (c=='\t'){
push(&lista_ang,podstawa);
strcpy(podstawa,k);
}
else if (c=='\n'){
push(&lista_pol,podstawa);
strcpy(podstawa,k);}}
nowy.lista_druga = *lista_pol;
nowy.lista_pierwsza = *lista_ang;
return nowy;
}
int main(){
listy x;
int stero=0;
stero=wybor1();
if(stero==1){
x = tworzenie_list();
show(x.lista_druga);
return 0;
}