[C] recherche chaine caractère
Fermé
joana
-
19 avril 2008 à 16:31
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 - 21 avril 2008 à 09:28
daronmaster Messages postés 326 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 - 21 avril 2008 à 09:28
A voir également:
- [C] recherche chaine caractère
- Caractère ascii - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
5 réponses
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
19 avril 2008 à 16:36
19 avril 2008 à 16:36
dans :
for(j=0;j<30 && trouve==0;j++,i++)
{
if(strcmp(p->NomPays,NomPays)==0)
{
trouve=1;
}
}
a quoi servent tes indices ? ou plutot a quoi sert cette boucle ?
un strcmp ne suffit-il pas ? entre p->NomPays et NomPays ?
strcmp compare deux chaine donc je ne vois l'utilité de ta boucle.
for(j=0;j<30 && trouve==0;j++,i++)
{
if(strcmp(p->NomPays,NomPays)==0)
{
trouve=1;
}
}
a quoi servent tes indices ? ou plutot a quoi sert cette boucle ?
un strcmp ne suffit-il pas ? entre p->NomPays et NomPays ?
strcmp compare deux chaine donc je ne vois l'utilité de ta boucle.
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
20 avril 2008 à 11:33
20 avril 2008 à 11:33
peux-tu me donner la structure Pays ainsi que les fonctions affichepays et lireVchaine stp, merci
Oui bien sûr, les voici:
merci
struct Pays{ intNumPays; char NomPays[20]; int NombreHab; }; int LireVChaine (char *p,short nb) { int i=0; char *g; fflush(stdin); g=p; do { *g=getchar(); i++; g++; }while (*(g-1)!='\n' && i < nb); *(g-1)='\0'; Majuscule(p); return (i); } void AffichePays(struct Pays*p) { system("cls"); printf("\n%d",p->NumPays); printf("%s",->NomPays); printf("%d",->NombreHab); }
merci
correction
struct Pays{
int NumPays;
char NomPays[20];
int NombreHab;
};
int LireVChaine (char *p,short nb)
{
int i=0;
char *g;
fflush(stdin);
g=p;
do
{
*g=getchar();
i++;
g++;
}while (*(g-1)!='\n' && i < nb);
*(g-1)='\0';
Majuscule(p);
return (i);
}
void AffichePays(struct Pays*p)
{
system("cls");
printf("\n%d",p->NumPays);
printf("%s",p->NomPays);
printf("%d",p->NombreHab);
}
struct Pays{
int NumPays;
char NomPays[20];
int NombreHab;
};
int LireVChaine (char *p,short nb)
{
int i=0;
char *g;
fflush(stdin);
g=p;
do
{
*g=getchar();
i++;
g++;
}while (*(g-1)!='\n' && i < nb);
*(g-1)='\0';
Majuscule(p);
return (i);
}
void AffichePays(struct Pays*p)
{
system("cls");
printf("\n%d",p->NumPays);
printf("%s",p->NomPays);
printf("%d",p->NombreHab);
}
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
20 avril 2008 à 18:22
20 avril 2008 à 18:22
pourquoi ne pas utilisé un bon vieux scanf("%s",p) ? et tes chaine ne sont pas de meme taille une est à 20 et une autre est à 30, pb de cohérence
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
20 avril 2008 à 23:59
20 avril 2008 à 23:59
comment tu rentres les pays dans la structure avant la recherche ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
21 avril 2008 à 09:28
21 avril 2008 à 09:28
voila ce que je ferai (le pb vient certainement que tu joue avec des tableau non alloué dynamiquement):
/* dans ta structure :
char *NomPays; et pas char NomPays[30];
*/
char s[256];
scanf("%s",s);//tu saisies le nom du pays
c->NomPays = (char *)malloc(sizeof(char)*(strlen(s)+1)); //allocation dynamique d'un tableau de char
strcpy(c->NomPays,s); //copie de s dans c->NomPays
//et voila cela devrait marcher enfin j'en suis quasi sur
// ensuite fais un strcmp et ok qd le resultat est à 0.
bon courage pour la suite
/* dans ta structure :
char *NomPays; et pas char NomPays[30];
*/
char s[256];
scanf("%s",s);//tu saisies le nom du pays
c->NomPays = (char *)malloc(sizeof(char)*(strlen(s)+1)); //allocation dynamique d'un tableau de char
strcpy(c->NomPays,s); //copie de s dans c->NomPays
//et voila cela devrait marcher enfin j'en suis quasi sur
// ensuite fais un strcmp et ok qd le resultat est à 0.
bon courage pour la suite
19 avril 2008 à 17:44
j'avais essayer sans boucle aussi et ça donne le même résultat, il ne trouve pas le pays malgré qu'il y en a d'encoder.
il y a surement une erreur mais je n'arrive pas à la trouver...