Oh non!!

Résolu
bako25 Messages postés 28 Date d'inscription samedi 23 juillet 2005 Statut Membre Dernière intervention 1 septembre 2005 - 31 août 2005 à 15:57
bako25 Messages postés 28 Date d'inscription samedi 23 juillet 2005 Statut Membre Dernière intervention 1 septembre 2005 - 31 août 2005 à 20:57
Le prog suivant calcule le nombre des 'e' dans un paragraphe:









#include<stdio.h>




#include<conio.h>




#include<string.h>




int main()




{




char t[100];




char *p;




int n=0;




printf("donner un texte:");




gets(t);




while(p=strchr(p,'e')) // pourquoi p? c'est un pointeur! et non pas une chaine!!!!








{n++;




p++;}




printf("le
nombre des 'e' est %d",n);




getch();




}


pouvez vous m'expliquer le fait que p est un pointeur=>la fonction strchr(p,'e')

11 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 août 2005 à 17:20
une chaine: suite d'octets à partir d'une adresse et finit au 1er ZERO rencontré.
Une chaine n'est donc qu'une adresse (un nombre donc) et rien d'autre.

donc:

p = t;
et ensuite tu peux boucler sur
whhile(p = strchr(p, 'e'))

ciao...
BruNews, MVP VC++
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
31 août 2005 à 20:30
un pointeur vers la première occurence de 'é' dans la chaine, ou bien 0 si non trouvé
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 août 2005 à 16:02
allez, dis nous ce qu'est une chaine pour toi.
Pas pour t'embeter mais te faire réfléchir sur le sujet.

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
31 août 2005 à 16:08
De plus ce programme n'est pas bon car p n'est initialisé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 août 2005 à 16:26
vi c'est clair et s'il réfléchit la dessus, il aurait du voir cela entre autre.

ciao...
BruNews, MVP VC++
0
bako25 Messages postés 28 Date d'inscription samedi 23 juillet 2005 Statut Membre Dernière intervention 1 septembre 2005
31 août 2005 à 16:44
mais p designe un nombre(une adresse quoi) .c'est *p qui designe le caractère!
je sais,je sais on peut coder autremant mais je veux comprendre celui là!
aller ,en admetant que je suis con!expliquez moi!
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
31 août 2005 à 16:50
eh bien tu as compris. p est une adresse, l'adresse a partir de laquelle tu cherche le caractère 'e'. Si tu considères qu'elle pointe vers une zone contenant des caractères, c'est une chaine de caractères
strchr va te retourner une adresse un peu plus loin que p
0
bako25 Messages postés 28 Date d'inscription samedi 23 juillet 2005 Statut Membre Dernière intervention 1 septembre 2005
31 août 2005 à 17:19
merci!j'ai encore 2 questions:



1_la syntaxe de strchr est : strchr(chaine,caractere), qu'est ce qu'elle renvoye exactement?

2_ si on déclare un pointeur tel que:

char *p="bonjour";

pouquoi le compilo accepte ça , bonjour n'est pas une adresse!
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 août 2005 à 17:30
SI SI, quand tu déclares "bonjour", on manipule ensuite à partir de l'ADRESSE du 1er octet, c'est bien une adresse.

ciao...
BruNews, MVP VC++
0
bako25 Messages postés 28 Date d'inscription samedi 23 juillet 2005 Statut Membre Dernière intervention 1 septembre 2005
31 août 2005 à 20:27
ah,oui j'ai oublié :

vous ne m'avez toujours pas dit que renvoye strchr(p,'é')) ??
0
bako25 Messages postés 28 Date d'inscription samedi 23 juillet 2005 Statut Membre Dernière intervention 1 septembre 2005
31 août 2005 à 20:57
merci,merci,merci...euh comment dire?

héhé j'ai tout compris je suis un genie^^ :d!
0
Rejoignez-nous