Prob recherche chaine de caractere

rissorg Messages postés 6 Date d'inscription mercredi 28 mai 2003 Statut Membre Dernière intervention 23 juin 2003 - 23 juin 2003 à 09:08
fced42 Messages postés 31 Date d'inscription dimanche 30 décembre 2001 Statut Membre Dernière intervention 3 septembre 2003 - 17 juil. 2003 à 22:36
Salut a tous!!!

J'ai un prob pour une recherche dans un fichier.
voici le fichier en question:

Perrissoud Gérald rte Bessine 74150 Rumilly

Ambulances VSL - Taxi
Alp Ambulances
Villavit 74450 LE GRAND BORNAND

je veux rechercher le nom de la localite en le comparant a ce fichier excel:

ABONDANCE
ALBY SUR CHERAN
ALEX
ALLEVES
ALLINGES
ALLONZIER LA CAILLE
AMANCY
AMBILLY
ANDILLY
ANNECY
ANNECY LE VIEUX
ANNEMASSE
ANTHY SUR LEMAN
ARACHES
ARBUSIGNY
ARCHAMPS
ARCINE
ARENTHON
ARGONAY
ARMOY
ARTHAZ PONT NOTRE DAME
AVIERNOZ
AVREGNY
AYSE
BALLAISON
LA BALME DE SILLINGY
LA BALME DE THUY
BALMONT
BASSY
LA BAUME
BEAUMONT
BELLEVAUX
BERNEX
LE BIOT
BLOYE
BLUFFY
BOEGE
BOGEVE
BONNEGUETE
BONNE
BONNEVAUX
BONNEVILLE
BONS EN CHABLAIS
BOSSEY
LE BOUCHET
BOUSSY
BRENTHONNE
BRIZON
BURDIGNIN
CERCIER
CERNEX
CERVENS
CHAINAZ LES FRASSES
CHALLONGES
CHAMONIX MONT BLANC
CHAMPANGES
LA CHAPELLE D ABONDANCE
LA CHAPELLE RAMBAUD
LA CHAPELLE ST MAURICE
CHAPEIRY
CHARVONNEX
CHATEL
CHATILLON SUR CLUSES
CHAUMONT
CHAVANNAZ
CHAVANOD
CHENE EN SEMINE
CHENEX
CHENS SUR LEMAN
CHESSENAZ
CHEVALINE
CHEVENOZ
CHEVRIER
CHILLY
CHOISY
CLARAFOND
CLERMONT
LES CLEFS
LA CLUSAZ
CLUSES
COLLONGES SUR SALEVE
COMBLOUX
CONS STE COLOMBE
LES CONTAMINES MONTJOIE
CONTAMINE SARZIN
CONTAMINE SUR ARVE
COPPONEX
CORDON
CORNIER
LA COTE D ARBROZ
CRAN GEVRIER
CRANVES SALES
CREMPIGNY BONNEGUETE
CRUSEILLES
CUSY
CUVAT
DEMI QUARTIER
DESINGY
DINGY EN VUACHE
DINGY ST CLAIR
DOMANCY
DOUSSARD
DOUVAINE
DRAILLANT
DROISY
DUINGT
ELOISE
ENTREMONT
ENTREVERNES
EPAGNY
ESERY
ESSERT ROMAND
ESSERTS SALEVE
ETAUX
ETERCY
ETREMBIERES
EVIAN LES BAINS
EVIRES
EXCENEVEX
FAUCIGNY
FAVERGES
FEIGERES
FERRIERES
FESSY
FETERNES
FILLINGES
LA FORCLAZ
FRANCLENS
FRANGY
LA FRASSE
GAILLARD
LES GETS
GIEZ
LE GRAND BORNAND
GROISY
GRUFFY
HABERE LULLIN
HABERE POCHE
HAUTEVILLE SUR FIER
HERY SUR ALBY
LES HOUCHES
JONZIER EPAGNY
JUVIGNY
LARRINGES
LATHUILE
LESCHAUX
LOEX
LOISIN
LORNAY
LOVAGNY
LUCINGES
LUGRIN
LULLIN
LULLY
LYAUD
MACHILLY
MAGLAND
MANIGOD
MARCELLAZ ALBANAIS
MARCELLAZ
MARGENCEL
MARIGNIER
MARIGNY ST MARCEL
MARIN
MARLENS
MARLIOZ
MARNAZ
MASSINGY
MASSONGY
MAXILLY SUR LEMAN
MEGEVE
MEGEVETTE
MEILLERIE
MENTHON ST BERNARD
MENTHONNEX EN BORNES
MENTHONNEX SOUS CLERMONT
MESIGNY
MESSERY
METZ TESSY
MEYTHET
MIEUSSY
MINZIER
MONNETIER MORNEX
MONTAGNY LES LANCHES
MONTMIN
MONTRIOND
MONT SAXONNEX
MORILLON
MORZINE
MOYE
LA MURAZ
MURES
MUSIEGES
NANCY SUR CLUSES
NANGY
NAVES PARMELAN
NERNIER
NEUVECELLE
NEYDENS
NONGLARD
NOVEL
LES OLLIERES
ONNION
ORCIER
PASSY
PEILLONNEX
PERRIGNIER
PERS JUSSY
LE PETIT BORNAND LES GLIE
POISY
PRAZ SUR ARLY
PRESILLY
PRINGY
PUBLIER
QUINTAL
REIGNIER
LE REPOSOIR
REYVROZ
LA RIVIERE ENVERSE
LA ROCHE SUR FORON
RUMILLY
ST ANDRE DE BOEGE
ST ANDRE VAL DE FIER
ST BLAISE
ST CERGUES
ST EUSEBE
ST EUSTACHE
ST FELIX
ST FERREOL
ST GERMAIN SUR RHONE
ST GERVAIS LES BAINS
ST GINGOLPH
ST JEAN D AULPS
ST JEAN DE SIXT
ST JEAN DE THOLOME
ST JEOIRE
ST JORIOZ
ST JULIEN EN GENEVOIS
ST LAURENT
ST MARTIN BELLEVUE
ST MARTIN SUR AVRE
ST NICOLAS DE VEROCE
ST PAUL EN CHABLAIS
ST PIERRE EN FAUCIGNY
ST ROCH
ST SIGISMOND
ST SIXT
ST SYLVESTRE
SALES
SALLANCHES
SALLENOVES
SAMOENS
LE SAPPEY
SAVIGNY
SAXEL
SCIENTRIER
SCIEZ
SCIONZIER
SERRAVAL
SERVOZ
SEVRIER
SEYNOD
SEYSSEL
SEYTHENEX
SEYTROUX
SILLINGY
SIXT FER A CHEVAL
VAL DE FIER
TALLOIRES
TANINGES
THYEZ
THOLLON LES MEMISES
THONES
THONON LES BAINS
THORENS GLIERES
THUSY
LA TOUR
USINENS
VACHERESSE
VAILLY
VALLEIRY
VALLIERES
VALLORCINE
VANZY
VAULX
VEIGY FONCENEX
VERCHAIX
LA VERNAZ
VERS
VERSONNEX
VETRAZ MONTHOUX
VEYRIER DU LAC
VILLARD
LES VILLARDS SUR THONES
VILLAZ
VILLE EN SALLAZ
VILLE LA GRAND
VILLY LE BOUVERET
VILLY LE PELLOUX
VINZIER
VIRY
VIUZ LA CHIESAZ
VIUZ EN SALLAZ
VOUGY
VOVRAY EN BORNES
VULBENS
YVOIRE
JUSSY
LES CARROZ D ARRACHES
SOMMAND

voici mon source:

#include<stdlib.h>
#include
#include <stdio.h>
#include <conio.h>
#include<string.h>
#include<ctype.h>

// nombre de ville au maximun
#define MAX_VILLE 38949
#define MAX_VILLE2 400
#define MAX_VILLE3 400
int main()
{
char LesPros[MAX_VILLE3][256];
char LesProsOk[MAX_VILLE3][256];
char LesVilles[MAX_VILLE][256];
char LesVillesOk[MAX_VILLE2][256];
char source[MAX_VILLE2][256];
int nbVille, nbVille2, nbVille3;
int i, j, k, l, v, w, z;
FILE *pvillexel;
FILE *ptest_text;
FILE *ptest_nompro;
FILE *ptest_exel;

//----------------------------chargement des nom de communes--------------------
if((pvillexel fopen("communes1.csv","rt")) NULL)
{
printf("Impossible d'ouvrir communes1.csv");
return -1;
}

nbVille = 0;
while(nbVille <= MAX_VILLE && !feof(pvillexel))
{
fgets((LesVilles[nbVille]),256,pvillexel);
nbVille ++;
}
fclose(pvillexel);

//----------------------------chargement des nom de professionnels--------------
if((ptest_nompro fopen("nom_professionnel.txt","rt")) NULL)
{
printf("Impossible d'ouvrir nom_professionnel.txt");
return -1;
}

nbVille3 = 0;
while(nbVille3 <= MAX_VILLE3 && !feof(ptest_nompro))
{
fgets(LesPros[nbVille3],256,ptest_nompro);
nbVille3 ++;
}
fclose(ptest_nompro);

//----------------------------chargement du doc source--------------------------

if((ptest_text=fopen("texte_source.txt","r"))==NULL)
{
cout<<"erreur lors de l'ouverture de texte_source.txt"<<endl;
return -1;
}
nbVille2 = 0;
while(nbVille2 <= MAX_VILLE2 && !feof(ptest_text))
{
fgets(source[nbVille2],256,ptest_text);
nbVille2 ++;
}
fclose(ptest_text);

//----------------------------comparaison et ecriture dans exel-----------------

if((ptest_exel=fopen("fichexel.csv","a"))==NULL)
cout<<"erreur lors de l'ouverture de fichexel.csv !"<<endl;

v=0;
for(j=0;j<nbVille-1;j++)
{
for(i=0;i<nbVille2;i++)
{
if(!strcmp(source[i],LesVilles[j]))
{
strcpy(LesVillesOk[j],LesVilles[j]);
cout<<LesVillesOk[j]<<endl;
// fprintf(ptest_exel,"%s\n",LesVillesOk[j]);
v++;
}
}
}

for(l=0;l<nbVille2;l++)
{
for(k=0;k<nbVille3;k++)
{
if(!strcmp(source[l],LesPros[k]))
{
strcpy(LesProsOk[k],LesPros[k]);
// cout<<LesProsOk[k]<<endl;
// fprintf(ptest_exel,"; %s\n",LesProsOk[k]);
w++;
}
}
}

z=v+w;
for(i=0;i<z;i++)
{
// fprintf(ptest_exel," %s ;%s\n",&LesVillesOk[i],LesProsOk[i]);
// cout<<LesVilles[z]<<endl;
}

fclose(ptest_exel);
getch();
system("PAUSE");
return 0;
}

mes prob sont:

Comment faire pour faire la comparaison sans tenir compte des majuscules et minuscules.

Comment faire pour trouver le nom alors k'il n'es pa seul su la ligne( mon prog marche auquel cas).

merci d'avance et j'attends vos reponses avec impatience.
@+

1 réponse

fced42 Messages postés 31 Date d'inscription dimanche 30 décembre 2001 Statut Membre Dernière intervention 3 septembre 2003
17 juil. 2003 à 22:36
Pour pas tenir compte de la casse, tu peut tous mettre en majuscule ou ne minuscule avec tolower ou toupper.
Sinon pour la recherche tu peut utiliser la focntion strstr pour rechercher une chaine dans un autre.

cedric@4devstudio.com
0
Rejoignez-nous