Selectionner char x => Segment. Fault.

Résolu
cs_miata Messages postés 86 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 19 août 2008 - 19 août 2008 à 20:24
cs_miata Messages postés 86 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 19 août 2008 - 19 août 2008 à 20:45
Bonjour,

Débutant en C, j'essai mais en vain.

<hr size="2" width="100%" />
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    char *s = (malloc(256 * sizeof(char)));
    s = "Plop";
   
    printf("%s\n", s[2]);
   
    return 0;
}

<hr size="2" width="100%" />
Je voudrais donc :
Prendre le 2ème caractère de la chaine (et par après, si j'y arrive, faire une lecture et récupérer ce que je veux, mais d'habord, faudrait que ça fonctionne :D)

Qu'es-ce qui cloche ? Comment le compiler pour que ça fonctionne ?
J'ai essayé pour le compiler : gcc -Wall -pedantic -g test.c -o test et gcc test.c -o test
Mais dès que le ./test, PAF : 'Erreur de segmentation' -_-'

Si je met printf("%s\n", s); eu lieu de printf("%s\n", s[2]); naturellement, ca fonctionne ...
Quelqu'un peut me mettre sur la voie ?

Merci :)

2 réponses

Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
19 août 2008 à 20:41
Salut,
Tu utilise printf avec le param "%s" (string), printf attend donc une adresse pointant sur une chaine de caracteres, hors la tu lui passe un caractere et donc forcement ca plante, tu ferait bien de t'acheter un bon bonquin pour apprendre les bases..

Corriger ca donne donc ca:

int main(void)
{
char szTest[] = "Test...";
printf("%s", szTest); // affiche la chaine
printf("%c\n", szTest[2]); // affiche le 3eme caractere
return 0;
}

Neo_Fr
3
cs_miata Messages postés 86 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 19 août 2008
19 août 2008 à 20:45
Haaaa, ouaiiis, juste, faut lui donner le type "caractère" et non "chaine de caractère" :)

Eh ben merci :)

Cordialement,
Maxux.
0
Rejoignez-nous