Quizz question langage c

Pas_daccord - 15 mars 2005 à 00:45
Ravachol Messages postés 560 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 - 22 mars 2005 à 09:12
Bonjour,

Voici une question du quizz :
# Qu'imprime l'extrait de programme suivant en langage c: char * p="abc" *(p+1)++ print f("%s",p)

* ab
* abd
* bbc
* acc --> reponse
* bc
* abc

???? Alors la ya une erreur ou faut que quelqun m'explique!
Deja ca compile pas (ou sont les ; ;p).
Ensuite il me semble qu'il manque la reponse Seg Fault ! (pour remplacer acc)
Enfin *(p+1)++; incrementrait le pointeur et non le pointe, la reponse devrait donc etre abc.
Je ne prend pas la peine de chercher plus loin mais serait heureux dans discuter :)

2 réponses

Pas_daccord
15 mars 2005 à 00:56
Re -

D'ailleurs ca compile deux fois moins (sans doute pas avec tout les compilateurs) puisque (p + 1) n'est pas une reference valide a incrementer. (L'incrementation ne sert a rien, pas de trace du pointeur incrementer apres l'operation).
Bonjour, j'ai un int, par exemple 5243 et je voudrais le convertir en char* afin de trouver sa longueur, i.e 4. J'ai essayé avec le casting, ça n'a pas marché. Comment je peux faire?
Merci d'avance
Ravachol Messages postés 560 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 120
22 mars 2005 à 09:12
Salut,
Pour la conversion vers un char *, utilises la fonction sprintf, ou snprintf qui est sécurisée.
Pour avoir la longueur de ce char *, c'est strlen.

Pour des questions concernant la programmation, il existe le forum "Programmation", justement.

A++
0