begin process at 2012 02 11 06:21:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Recherche chaine de caractères dans un fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Recherche chaine de caractères dans un fichier

mercredi 14 janvier 2004 à 11:26:08 | Recherche chaine de caractères dans un fichier

Arkadius

Bon j'ai été bcp plus explicite et précis dans mon poste précédant mais l'envoie de celui-ci à foiré, alors en bref.

J'écris des chaines de caractères dans un fichier texte. Puis je souhaite lire ces chaines de caractère ( pour vérifier si la chaine saisie dans le programme existe dans le fichier ).


Actuellement j'arrive à le faire avec des chaines de longueur fixe mais je souhaiterais que la longueur ouisse être variable.

Dès que les chaines sont de longueur variable l'accès séquentiel au fichier décale tout et je ne retrouve plus mes chaines de car.

Pourriez vous m'aider ?

Je souhaite pouvoir écrire des chaines de n'importe quelle longueur et retrouver ces chaines dans le fichier grace à la fonction strcmp.

Voici le code correspondant à l'écriture et à la lecture dans le fichier:


void ecriture_fichier() //fonction pour ajouter un profil

{
char p[7], reponse[3];
fichier = fopen("c:\\\\profil.dat","a+"); /* pointeur a la fin */
printf("\\nVoulez-vous enregistrer votre profil?\\n");
gets(reponse);
if ((strcmp(reponse,"oui")==0)
{system("cls");
printf("\\nVotre profil doit faire 6 caracteres\\n");
gets(p);
while (strlen(p)!=6)
{
puts ("votre rofil doit faire 6 caracteres");
gets(p);
}
}


fputs(p,fichier);
} //Fin ecriture fichier




//Lecture

system("cls");
puts("Recharche du profil");
temps();
while(((fgets(q,7,fichier))!=NULL)&&(trouve==0))
if(strcmp(profil,q)==0)trouve = 1;
mercredi 14 janvier 2004 à 12:05:01 | Re : Recherche chaine de caractères dans un fichier

gagaet22

Et si tu utilisais fscanf ???
mercredi 14 janvier 2004 à 13:38:59 | Re : Recherche chaine de caractères dans un fichier

vecchio56

Administrateur CodeS-SourceS
-écris d'abord un entier qui contient la longeur de la chaine puis la chaine elle meme, pour savoir combien d'octets lire par la suite.
-si tu travailles sous Windows, utilises la fonction WriteFile qui permet de vérifier le nombre d'octets écrits

mercredi 14 janvier 2004 à 21:10:58 | Re : Recherche chaine de caractères dans un fichier

Arkadius

En écrivant d'abord la longueur de la chaine le fichier sera de toute manière lu de manière séquentielle avec cette longueur définie.

J'ai essayé avec fscanf de cette manière (extrait du code )

void site()
{

char titi[80];


if ((fichier = fopen("c:\\\\test.dat","r")) == NULL)
printf("Impossible d'ouvrir le fichier profil\\n");
else
{
while(fscanf(fichier,"%s_",titi) != EOF)
printf("%s\\n",titi);





Jusqu'ici ca fonctionne très bien le fichier est parcouru et le printf affiche toutes les chaines

MAIS dans le bout de code qui suit ca foire, quoi que je fasse la comparaison entre la chaine saisie et stockée dans char nom[20] //variable globale et la variable titi ne se fait pas




if (strcmp(nom,titi)==0)
{puts ("tout va bien");
getch();} else
fclose(fichier);
getch();
}
}




help
mercredi 14 janvier 2004 à 21:23:39 | Re : Recherche chaine de caractères dans un fichier

gagaet22

Tiens... Mais essaye en utilisant une réference !!!!
fscanf(Fichier, "%s" &Titi);
mercredi 14 janvier 2004 à 22:14:07 | Re : Recherche chaine de caractères dans un fichier

Arkadius


Pardon, ce que tu appelles réference c'est le "&" c'est ca ?

Si c'est ca alors je l'avais mis dans le code ss resultat...

Par contre comme précisé dans le poste ci-dessus, le fscanf lit le fichir mon problème c'est plutot la comparaison de ce qu'il lit avec la variable saisie dans le programme.

Voici les étapes du prog:


1) J'écris des chaines dans le fichier test.txt
2) Dans mon prog je demande à l'utilisateur de saisir un profil ( char nom[20] )
3) Je verifie dans le fichier s'il existe une chaine qui correspond à ce qui a été saisie ( nom )
4) Sii ca existe alors le prog se poursuit


voilà


Quoi qu'il en soit je te remercie de m'aider ( je débute... j'ai attaqué le c hier soir )

Merci bcp
mercredi 14 janvier 2004 à 22:16:44 | Re : Recherche chaine de caractères dans un fichier

vecchio56

Administrateur CodeS-SourceS
& n'est pas une référence mais l'adresse, ca n'a rien a voir
A part ca je ne vois pas ton pb, puisuae tu arrives bien a lire les chaines, tu fais ensuite un strcmp si ca rend 0 c'est que c'est égal


mercredi 14 janvier 2004 à 22:47:58 | Re : Recherche chaine de caractères dans un fichier

gagaet22

Tout à fait vecchio56, j'ai dit une belle connerie.

Sinon pour toi Arkadius : Regarde si c est pas parce que tu compare un char[20] avec un char[80], je crois pas mais essaye qd meme....
mercredi 14 janvier 2004 à 22:51:52 | Re : Recherche chaine de caractères dans un fichier

Arkadius


Je dois merder quelque part voici le code de ma fonction dans sa totalité: ( Les chaines de caractères dans le test.txt sont séparées par un espace )



void site()
{

char titi[80];
char nom[15];



puts("Saisissez votre nom");
gets(nom);

if ((fichier = fopen("c:\\\\test.dat","r")) == NULL)
printf("Impossible d'ouvrir le fichier profil\\n");
else
{
while ( fscanf(fichier,"%s ",&titi)!= EOF)


if (strcmp(titi,nom)==0)
{puts ("tout va bien");
getch();} else

getch();


}

fclose(fichier);
}





Si vous pouvez m'aider n'hesitez pas

Merci beaucoup
mercredi 14 janvier 2004 à 23:25:42 | Re : Recherche chaine de caractères dans un fichier

gagaet22

Tiens ca peut t aider à mieux cerner le prob....
Moi, j ecris une chaine de caractere puis je passe à la ligne....
Pour un petit fichier ca change rien meme si c est pas trés économ.. Mais bon c est plus clair à lire !!!


//ecriture d une ligne
fprintf(pFichierTXT,chaine);fprintf(pFichierTXT,"\\n");

Et ca change rien pour la lecture!!!

Est ce que tu utilise un debug ??? si c est pas le cas, vu que tu debute juste, je te le conseille!!!! (conseil d un debutant à un debutant). Tu controle les valeurs juste avant la comparaison, ca élimine des types d erreurs !!!

1 2

Cette discussion est classée dans : fichier, chaine, chaines, longueur, profil


Répondre à ce message

Sujets en rapport avec ce message

lire une chaine de caractere dans un fichier et la camparer aux autres chaines dans le meme fichier [ par leiloula ] j'ai pa pu programmé un truc qui me permet de lire une chaine de caractere dans un fichier et la camparer aux autres chaines dans le meme fichier et v traitement d'un fichier [ par boualiasma ] Salut,J'ai un fichier texte bien formé contient deux champs: objet et attribut.tous les objets sont des entiers et tous les attributs sont de chaines taille d'une chaine extraite d'un fichier [ par aymen87 ] Bonjour Je suis en train de lire à partir d'un fichier ligne par ligne en utilisant fgets, mais avec fgets je doit introduire la longueur maximale d une chaine dans un fprintf [ par nassim1987 ] Bonjour, j'ai un programme en c, j'écris dans un fichier mais j'ai un petit problème je veux faire fprintf(fichier,"a % tab[k]"); ça s'exécute normal problème lecture fichier de grande taille [ par africanwinners ] j'ai concu ce code pour lire le contenu d'un fichier et le mettre dans un tableau à 2 dimensions: ca marche pour un fichier de petite taille:et dès qu longueur tableau de chaune de caractere [ par Marco59190 ] Salut tout le monde :D J'ai un petit problème... J'ai un tableau de chaine de caractère comme par exemple : char *mot10[] = {"ordinateur","multimedia" compter les caractere dans un fichier (espaces inclus) [ par Pitdeboole ] salut à tous je fais mes premiers pas dans le domaine de la programmation j'ai un probleme que j'arrive pas a resoudre: lire un texte au clavier l'enr Aide Code C++ (Ecriture, comparaison de chaines, remplacement de chaines dans un fichier ect) [ par JosselynColombet ] Bonjour, Je m'appel Josselyn et je suis nouveau sur le forum de CppFrance.com Je travail sur le cryptage des mot de passes depuis plusieurs semaines remplir une chaine par des lignes d'un fichier [ par boualiasma ] Bonjour, Je voulais remplir une chaine 's' par des lignes des fichiers. par exemple si on a le fichiers "test.txt": aaa [quote]cc bbbbb deee[/quote]


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales