cs_miata
Messages postés86Date d'inscriptionmardi 31 août 2004StatutMembreDernière intervention19 août 2008
-
19 août 2008 à 20:24
cs_miata
Messages postés86Date d'inscriptionmardi 31 août 2004StatutMembreDernière intervention19 août 2008
-
19 août 2008 à 20:45
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 ?
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 20142 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;
}