rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[C] recherche chaine caractère

joana, le samedi 19 avril 2008 à 16:31:40
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
Répondre à joana  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mype, le dimanche 20 avril 2008 à 23:59:32
comment tu rentres les pays dans la structure avant la recherche ?
Répondre à mype

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 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
[KSH] - Completer une chaine de caractere (Résolu)Bonjour à tous, Je suis à la recherche d'une technique pour compléter avec un caractère (par exemple A), une chaîne de caractère si cette dernière a moins de 5 caractères. Par exemple : var1=12345 Résultat => 12345 var2=123 Résultat => 123AA... www.commentcamarche.net/forum/affich-5290501-ksh-completer-une-chaine-de-caractere
[Excel] Comparer des chaines (Résolu)Bonjour, je voudrais savoir s'il existe une fonction comparant 2 chaines de caractères et renvoyant la différence entre ces chaines ? Edit : oups je me suis trompé d'endroit :-| www.commentcamarche.net/forum/affich-4090571-excel-comparer-des-chaines
Canaux des chaines (Résolu)Bonjour, je souhaiterais connaitre les canaux correspondant aux chaines de la tnt comme arte(les chaines au dela des six premières chaines)... ou puis je les trouver? merci d'avance. www.commentcamarche.net/forum/affich-4397371-canaux-des-chaines
Supprimer un fichier contenant des caractères spéciauxSi le fichier que vous souhaitez supprimer commence par un caractère "moins" (-), la commande rm risque de prendre la suite comme une option de la ligne de commande. Pour y remédier, une première solution consiste à faire précéder le nom du... www.commentcamarche.net/faq/sujet-7057-supprimer-un-fichier-contenant-des-caracteres-speciaux
[Windows] PCI multimedia audio device (contrôleur manquant)Ce problème se caractérise généralement par une absence de son sous Windows et une icone avec un point d'exclamation jaune dans le gestionnaire de périphériques du panneau de configuration. Le système peut également parfois donner une des erreurs... www.commentcamarche.net/faq/sujet-2447-windows-pci-multimedia-audio-device-controleur-manquant
Redéfinir les touches du clavierCet article va vous expliquer comment modifier quel caractère s'affiche quand on presse une touche, et comment s'en servir pour lancer des applications. keycode, keysym ? Un keycode est le code d'une touche du clavier. Le keysym est le symbole... www.commentcamarche.net/faq/sujet-6988-redefinir-les-touches-du-clavier
[python] probleme de comparaison entre chaine (Résolu)Bonjour, voilà mon code serveur, je veux comparer la chaine envoyer par le client par rapport à la liste l. j'ai fait plusieurs affichages pour enfin découvrir que l'erreur c'est au niveau de la comparaison ch==donneesRecues la "==" ne... www.commentcamarche.net/forum/affich-5812116-python-probleme-de-comparaison-entre-chaine
Canaux des chaines de TV (Résolu)Bonjour, je cherche les canaux des chaines de TV parce que mon récepteur tnt ne trouve rien. J'habite dans l'oise entre beauvais et Méru. Je crois que l'émetteur le plus proche est Mantes. Merci. www.commentcamarche.net/forum/affich-3168258-canaux-des-chaines-de-tv
Vba Chercher une chaîne de caractère (Résolu)Bonjour, J'ai une colonne où je recherche une ligne en paritculier. La colonne comporte des chaîne de caractères: FM1 FM2 FM3 .... Mais du coup quand je fais ma recherche, il ne trouve pas aucune valeur; certainement car je défini mal ma chaîne... www.commentcamarche.net/forum/affich-6975523-vba-chercher-une-chaine-de-caractere
Télécharger Pilote pour clavier enrichi Il manque quelques caractères bien utiles sur notre Clavier ordinaire (AZERTY). Souvent, on perd de précieuses minutes en faisant la recherche de caractères spéciaux sur le PC. Ce logiciel tente de résoudre ce problème en enrichissant les caractères... www.commentcamarche.net/telecharger/telecharger-34055971-pilote-pour-clavier-enrichi
Clip Sonic CH1019CH 1019 ,Chaîne Fixe,Nombre de pré-selections:20,Puissance: ,Type d'enceintes:2 voies,Type de chaîne:Fixe,Type de radio:AM/FM,Radio,Divers:Control of the functions of IPod by the chain ,Double Cassette: ,Formats supportés:CD, CD... www.commentcamarche.net/guide-achat/clip-sonic-ch1019-954022-fiche-technique
NAD C715C 715 ,Chaîne Fixe,Page web du produit:Anglais,,Télécommande,Lecteur de CD,Nombre de CD dans le chargeur: ,Number of USB hosts:1,Formats supportés:CD, CD-R, CD-RW, MP3, WMA,Horloge,Radio,Divers: ,Double Cassette: ,Nombre de pré... www.commentcamarche.net/guide-achat/nad-c715-1138414-fiche-technique
Langage C++ - Chaînes 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 de caractères est un tableau, comportant... www.commentcamarche.net/cpp/cppstring.php3
Langage C - Les chaînes 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 de caractères est un tableau, comportant... www.commentcamarche.net/c/cstring.php3
Codage Base64 Le principe du codage Base 64 consiste à utiliser des caractères US-ASCII (caractères non accentués) pour coder tout type de données codé sur 8 bits. Les protocoles de courrier électronique ont en effet été prévus à l'origine pour transporter des... www.commentcamarche.net/base/base64.php3
Toutes les réponses pour « [C] recherche chaine caractère »