[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux] MySQL et C
Le Mardi 14 Août 2001 08:07, vous avez écrit :
> Et oh, j'en ai vu des horreurs mais celle-là...
>
> Plus sérieusement, tu déclares un pointeur sur une chaîne de caractère
> ok... mais si tu n'initialise pas la zone vers laquelle il pointe !!!
>
OUPS, l'initialisation du pointeur et le malloc. Evidemment, comment ais-je
pu oublier ça.
J'en suis rouge de honte.......
> char *string = NULL;
> string = (char *) malloc(n * sizeof(char));
> if(!string) erreur;
>
> ensuite :
>
> snprintf(query, n - 1, "INSERT into eleves VALUES(NULL, %d, %d, %d,
> %d)", val1, val2, val3, val4);
> en supposant que val1, val2,... soient des entiers.
>
> pour terminer :
>
> mysql(&mysql, query);
>
> Ton segmentation fault est simplement dû au fait que tu copies des
> valeurs à une adresse mémoire que tu n'as pas initialisé...
>
> Voilà
>
Merci beaucoup pour ta remarque.
> Marc Raeymaekers wrote:
> >Bonjour, bonsoir,
> >
> >Toujours avec mon étude sur SQL. Je souhaiterais faire une interface
> > graphique avec GTK+ de ma base de données, mais pour cela, il me faut
> > coder un programme en C.
> >Et c'est là que Perl marque d'énormes points par rapport au C: le
> > traitement des
> >chaînes de caractères. Je sais ce n'est pas une découverte, puisque c'est
> > pour ça que Perl a été créé.
> >
> >Par exemple:
> >
> >mysql_query(&mysql,"INSERT INTO eleve VALUES(NULL,1,2,1,5,2)");
> >
> >fonctionne convenablement, mais par contre lorsque que je veux passer ces
> >valeurs par des variables, cela ne fonctionne pas du tout:
> >
> >/* toutes les déclarations sont faites auparavant */
> >val1=1;
> >val2=2;
> >val3=1;
> >val4=5;
> >val5=2;
> >mysql_query(&mysql,"INSERT INTO eleve
> > VALUES(NULL,val1,val2,val3,val4,val5)");
> >
> >là par contre, rien ne fonctionne.
> >
> >Je me suis dit que j'allais essayer avec un sprintf().
> >
> >char *string;
> >sprintf(string,"INSERT INTO eleve
> >VALUES(NULL,%d,%d,%d,%d,%d)",val1,val2,val3,val4,val5);
> >mysql_query(&mysql,string);
> >
> >et maintenant j'obtiens un "Segmentation fault".
> >
> >Je ne vais quand même pas passer par une cascade de strcat() (plus la
> >conversion
> >de int en caractères) pour construire la chaîne de caractères à envoyer à
> >mysql_query().
> >
> >On ne va pas se faire em***** par une bêtise pareille. Moi qui me faisais
> > une joie
> >de bosser à nouveau sur GTK+.
> >
> >Il semble que Perl possède un module graphique... Perl-GTK je crois.
> > Quelqu'un a déjà joué avec ça?
> >
> >[ Soyez précis dans vos sujets svp afin de déterminer directement ]
> >[ le type de demande... ]
> >[ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php ]
> >[ Archives de la mailing list: http://archives.linuxbe.org/linux/ ]
> >[ http://LinuxBe.org Contact: listmaster@linuxbe.org ]
[ Soyez précis dans vos sujets svp afin de déterminer directement ]
[ le type de demande... ]
[ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php ]
[ Archives de la mailing list: http://archives.linuxbe.org/linux/ ]
[ http://LinuxBe.org Contact: listmaster@linuxbe.org ]