URL Split et SegFault en C

Fermé
Mondissa - 1 mars 2011 à 22:55
arthurc Messages postés 26 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 25 mars 2011 - 2 mars 2011 à 10:36
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:

#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:

1 réponse

arthurc Messages postés 26 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 25 mars 2011 4
2 mars 2011 à 10:36
Salut,

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, "");

0