Selectionner char x => Segment. Fault. [Résolu]

Signaler
Messages postés
86
Date d'inscription
mardi 31 août 2004
Statut
Membre
Dernière intervention
19 août 2008
-
Messages postés
86
Date d'inscription
mardi 31 août 2004
Statut
Membre
Dernière intervention
19 août 2008
-
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

Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
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
Messages postés
86
Date d'inscription
mardi 31 août 2004
Statut
Membre
Dernière intervention
19 août 2008

Haaaa, ouaiiis, juste, faut lui donner le type "caractère" et non "chaine de caractère" :)

Eh ben merci :)

Cordialement,
Maxux.