URL Split et SegFault en C
Mondissa
-
arthurc Messages postés 27 Statut Membre -
arthurc Messages postés 27 Statut Membre -
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
- Split rj45 ✓ - Forum câblage
- Comment changer url iptv - Forum Créer un site
- Ping url ✓ - Forum Windows
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, "");