Flux rss
Rechercher : dans
Par :

[C] recherche chaine caractère

joana, le samedi 19 avril 2008 à 16:31:40 
 Signaler ce message aux modérateurs

Bonjour,

comment faire pour rechercher chaine de caractère dans une structure en langage c?

quand il n'y a aucun pays ça fonctionne mais dés que j'en encode un puis que je le recherche, il me dit qu'il n'a pas pu être trouvé.

voici mon code:

short RechercheParNom (struct Pays*p) //par pays

{
	
	int j,i;
	short trouve=0;
	char NomPays[30];
	

	printf("Recherche d'un Pays\n");
	printf("________________________\n\n");

	printf("Entrez le nom a rechecher : ");
	j=LireVChaine(NomPays,30);	
	Majuscule(&NomPays[0]);


	for(j=0;j<30 && trouve==0;j++,i++)
	{
		
		
		if(strcmp(p->NomPays,NomPays)==0)
		{
			trouve=1;
		}
	}


if(j==30 && trouve==0)
		j=0;

	if (trouve==1)
	{
		AffichePays(p);
	}
	else
	{
		printf("\nLe Pays recherche n'a pu etre trouve");
	}
	
	return (j-1);
}
Configuration: Windows XP
Firefox 2.0.0.13

1

daronmaster, le samedi 19 avril 2008 à 16:36:47

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.

Répondre à daronmaster

2

joana, le samedi 19 avril 2008 à 17:44:15

Bonjour,

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...

short RechercheParNom (struct Pays*p) //par pays

{
	
	int j,i;
	short trouve=0;
	char NomPays[30];
	

	printf("Recherche d'un Pays\n");
	printf("________________________\n\n");

	printf("Entrez le nom a rechecher : ");
	j=LireVChaine(NomPays,30);	
	Majuscule(&NomPays[0]);


	
		
		
		if(strcmp(p->NomPays,NomPays)==0)
		{
			trouve=1;
		}
          
        if(j==30 && trouve==0)
		j=0;

	if (trouve==1)
	{
		AffichePays(p);
	}
	else
	{
		printf("\nLe Pays recherche n'a pu etre trouve");
	}
	
	return (j-1);
}

Répondre à joana

3

daronmaster, le dimanche 20 avril 2008 à 11:33:40

Peux-tu me donner la structure Pays ainsi que les fonctions affichepays et lireVchaine stp, merci

Répondre à daronmaster

4

joana, le dimanche 20 avril 2008 à 14:51:27

Oui bien sûr, les voici:

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

Répondre à joana

5

joana, le dimanche 20 avril 2008 à 14:56:01

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);
}

Répondre à joana

6

daronmaster, le dimanche 20 avril 2008 à 18:22:00

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

Répondre à daronmaster

7

joana, le dimanche 20 avril 2008 à 23:41:52

J'ai modifier pour les tailles et j'ai essayer avec scanf mais il me dit qu'il ne trouve pas bien que j'ai encodé précemment, il doit y avoir une erreur mas je ne trouve pas...

Répondre à joana

8

mype, le dimanche 20 avril 2008 à 23:59:32

Comment tu rentres les pays dans la structure avant la recherche ?

Répondre à mype

9

 daronmaster, le lundi 21 avril 2008 à 09:28:41

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

Répondre à daronmaster
Langage C - Les chaînes de caractères Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne... www.commentcamarche.net/contents/c/cstring.php3
ACCESS : rechercher chaines caractères sembla Bonjour, Je travaille sous ACCESS et je dois rechercher dans une base de donnée des chaînes de caractères qui se ressemblent. Par exemple, j'aimerai que dans une base où il y a "MR DUPONT, DUPONT, MRDUPONT, CHARLES, MR MARQUANT, MARQUANT" , Il me... www.commentcamarche.net/forum/affich-12087152-access-rechercher-chaines-caracteres-sembla
[langage C]remplacer chaine de caractere Bonjour, j'aimerais savoir s'il est possible de faire en langage C ceci: j'ai par exemple un fichier test.txt dans lequel il se trouve la chaine de caractere suivante: toto est il possible de remplacer cette chaine de caractere par une autre... www.commentcamarche.net/forum/affich-3184665-langage-c-remplacer-chaine-de-caractere
Les guillemets, apostrophes et les chaînesComment jouer avec les guillemets et les apostrophes dans les chaînes 1. Préambule 2. Éviter une coupure dans la chaîne 3. Ajouter un guillemet dans la chaîne 3.1 Avec l'apostrophe 3.2 Avec l'ASCII 3.3 Directement 3.3.1 Méthode... www.commentcamarche.net/faq/sujet-13095-les-guillemets-apostrophes-et-les-chaines
Les piles en langage CLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage... www.commentcamarche.net/faq/sujet-8283-les-piles-en-langage-c
[VB] Recherche dans une chaîne de caractèresBonjour, J'aimerais savoir comment faire pour rechercher des caractères dans une chaîne de caractères en VB 6. Exemple : Dans Chaine = "Bonjour il fait beau", j'aimerais rechercher "fait". Précision, les chaînes de caractères ne doivent pas être de... www.commentcamarche.net/forum/affich-351245-vb-recherche-dans-une-chaine-de-caracteres
Utilisation de string en C++Bonjour j'essaie d'apprendre le C++ Je voudrrais définir une classe qui contient un attribut de type string (chaine de caractere) Pour cela, j'ai inclus la bibliotheque : #include ensuite la classe est définie ainsi : class Ville { public :... www.commentcamarche.net/forum/affich-2032227-utilisation-de-string-en-c
Fichiers contenant une chaine de caractèrebonjour, quelle commande me permettrait de savoir quels fichiers ds un dossier que l'on appellera D1 contiennent une chaîne de caractères string1? je pense qu'il faut faire appel aux commandes find et grep. à mon avis, il faudrait les utiliser ds une... www.commentcamarche.net/forum/affich-1545555-fichiers-contenant-une-chaine-de-caractere
Langage C - Les variablesLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans... www.commentcamarche.net/contents/c/cvar.php3
Les chaînes de caractères en C++Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une... www.commentcamarche.net/contents/cpp/cppstring.php3
Javascript - Les chaînes de caractèresQu'est-ce qu'une chaîne de caractère Une chaîne de caractère est, comme son nom l'indique, une suite de caractères. On la représente par la suite de caractères encadrée par des guillemets simples (') ou doubles ("), sachant que les deux types de... www.commentcamarche.net/contents/javascript/jschar.php3