URL Split et SegFault en C
Mondissa
-
arthurc Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
arthurc Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voila je suis débutante en c et je cherche à écrire un cgi pour affichage de quelques informations en langage c.
Mon problème est une erreur de segmentation.Je maitrise pas bien les allocations mémoires.Mon code est le suivant:
Voilà je cherche à récupérer les paramètres données dans une URL pour pouvoir afficher les contenu XML.
Merci bien pour votre aide.
voila je suis débutante en c et je cherche à écrire un cgi pour affichage de quelques informations en langage c.
Mon problème est une erreur de segmentation.Je maitrise pas bien les allocations mémoires.Mon code est le suivant:
#include<stdio.h> #include<stdlib.h> #include<string.h> main(){ char *queryString; char *tab[10]; char *ch; int nb; int i; int j; queryString =(char *)getenv ("QUERY_STRING"); nb=1; i=0; j=0; ch=malloc (10*sizeof(char)); ch=""; printf("Content-type:text/xml\r\n\r\n"); printf( "<html>\n"); printf("<head><Titre>Carnet d'adresses</Titre></head>\n"); printf("<body>\n"); printf("<Contacts>"); while(queryString[i] != '\0') { if(queryString[i] != '&') { ch[j]=queryString[i]; j++; } else { ch[j]='\0'; tab[nb]=ch; ch=malloc (10*sizeof(char)); ch=""; j=0; nb++; } if(nb=3) { printf("<Nom>%s</Nom>",tab[1]); printf(" <Prenom>%s</Prenom>",tab[2]); printf( "<Adr>%s</Adr>",tab[3]); nb=1; ch=malloc (10*sizeof(char)); ch=""; j=0; } i++; } printf("</Contacts>"); printf( "</body></html>\n"); }
Voilà je cherche à récupérer les paramètres données dans une URL pour pouvoir afficher les contenu XML.
Merci bien pour votre aide.
A voir également:
- URL Split et SegFault en C
- Url - Guide
- Split cam - Télécharger - Messagerie
- Comment changer url iptv - Forum Créer un site
- Split rj45 ✓ - Forum câblage
- Atlas pro url serveur invalide - Forum TV & Vidéo
1 réponse
Salut,
Sans regarder le parsing, tu fais ça :
la 1er ligne alloue bien 10 octets pour ton ch.
la 2em ligne, affecte à ch la chaine constante "".
ensuite tout manip sur ch va te mener au seg fault
il faut supprimer ch="".
si tu veux l'initialiser à une chaîne vide utilise
Sans regarder le parsing, tu fais ça :
ch=malloc (10*sizeof(char)); ch="";
la 1er ligne alloue bien 10 octets pour ton ch.
la 2em ligne, affecte à ch la chaine constante "".
ensuite tout manip sur ch va te mener au seg fault
il faut supprimer ch="".
si tu veux l'initialiser à une chaîne vide utilise
strcpy (ch, "");