Bonsoir à vous les gros geeks , je dois réaliser un code me permettant d'inverser une chaîne de caractères en c:
Pitié, pensez aux balises code !!!Code:#include <stdlib.h> #include <stdio.h> typedef struct el* pil; // struct el* = definition pointeur sur el ; pil=nom typedef struct el{ char val; pil next; //pointe vers valeur de tel }tel; pil creelem(char val){ pil aux; aux=(pil) malloc(sizeof(tel)); aux->val=val; aux->next=NULL; return aux; } pil empiler(pil p, char val){ pil aux=creelem(val); aux->next=p; p=aux; return p; } pil depiler(pil p, char *pv ){ pil aux; aux=p; printf("1\n"); if(p=NULL){ printf("pile vide\n"); exit(1); }else{ printf("2\n"); p=p->next; printf("3\n"); *pv=aux->val; printf("4\n"); free(aux); return p; } } void main(){ char s[200]; char t[200]; int n=0; pil p=NULL; short int i=0; char a; printf("Bonjour,Votre mot à inverser:\n"); gets(s); while(s[i]!='\0'){ empiler(p,s[i]); i++; n=i; } printf("on va depiler\n"); for(i=0;i<n;i++){ p=depiler(p,&a); t[i]=a; } for(i=0;i<n;i++){ printf("%c",t[i]); } }
Bonjour,Votre mot � inverser:
futurasciences
on va depiler
1
2
Erreur de segmentation
J'ai mis des "balises" dans la fonction dépiler pour vous montrer ou mon programme foire!
Pourriez vous m'aider SVP? (je ne cherche pas à avoir un programme particulièrement optimisé mais plutôt fonctionnel)
-----