Accueil > Forum > > > > Lire toutes les chaines d'un fichier
Lire toutes les chaines d'un fichier
dimanche 27 janvier 2002 à 18:01:07 |
Lire toutes les chaines d'un fichier

JMGR
|
Salut, J'ai fait un programme qui charge toutes les chaines séparées par des espaces, et la boucle for ne se termine jamais, car la dèrnière chaine se lit à l'infini. Code : char Chaines[1000][255]; FILE *fp; fp=fopen("fichier.txt","r"); for(int i=0;strcmp(temp,"");i++) { fscanf("%s",&temp); } fclose(fp);
|
|
dimanche 27 janvier 2002 à 19:50:11 |
Re : Lire toutes les chaines d'un fichier

header
|
Si tu veux quil ny est plus de boucle infini il faut que tu testes la fin du fichier avec EOF
------------------------------- Réponse au message : -------------------------------
Salut, J'ai fait un programme qui charge toutes les chaines séparées par des espaces, et la boucle for ne se termine jamais, car la dèrnière chaine se lit à l'infini.
Code : char Chaines[1000][255]; FILE *fp; fp=fopen("fichier.txt","r"); for(int i=0;strcmp(temp,"");i++) { fscanf("%s",&temp); } fclose(fp);
|
|
dimanche 27 janvier 2002 à 20:35:31 |
Re : Lire toutes les chaines d'un fichier

MangaII
|
Re ! Je ne sais pas ou tu as trouvé ta boucle for avec la comparaison, mais tu ne pourra jms avoir un code qui marche en faisant ca ! Dans le cas d'un fchier, tu ne c pas quelle est sa longueur ! Or, par définition, une boucle FOR se répète un nombre défini de fois ! c pas ce que tu ve ! Comm je te l'ai dit pour l'otre mess, utilise une boucle WHILE !
et pour tester si tu est a la fin du fichier, c'est FEOF regarde la doc pour ces fonctions, et tu verra que tu va trouver ton bonheur ! A+ NICO !
------------------------------- Réponse au message : -------------------------------
Si tu veux quil ny est plus de boucle infini il faut que tu testes la fin du fichier avec EOF
------------------------------- Réponse au message : -------------------------------
Salut, J'ai fait un programme qui charge toutes les chaines séparées par des espaces, et la boucle for ne se termine jamais, car la dèrnière chaine se lit à l'infini.
Code : char Chaines[1000][255]; FILE *fp; fp=fopen("fichier.txt","r"); for(int i=0;strcmp(temp,"");i++) { fscanf("%s",&temp); } fclose(fp);
|
|
lundi 28 janvier 2002 à 09:42:02 |
Re : Lire toutes les chaines d'un fichier

JMGR
|
En fait, il me refait une boucle infinie !
Mon code :
FILE *fp,*fp2; char tmp[1]; char temp[255]; int count=0,i=0; fp=fopen("test.txt","r"); fp2=fopen("test.txt","w"); while(feof(fp)==0) { count++; } sprintf(temp,"Nombre d'octets : %d",count); MessageBox(temp,"",MB_OK); while(i<count) { fread(tmp,sizeof( char ),1,fp); fwrite(tmp,sizeof( char ),1,fp2); i++; } fclose(fp); fclose(fp2);
------------------------------- Réponse au message : -------------------------------
Re ! Je ne sais pas ou tu as trouvé ta boucle for avec la comparaison, mais tu ne pourra jms avoir un code qui marche en faisant ca ! Dans le cas d'un fchier, tu ne c pas quelle est sa longueur ! Or, par définition, une boucle FOR se répète un nombre défini de fois ! c pas ce que tu ve ! Comm je te l'ai dit pour l'otre mess, utilise une boucle WHILE !
et pour tester si tu est a la fin du fichier, c'est FEOF regarde la doc pour ces fonctions, et tu verra que tu va trouver ton bonheur ! A+ NICO !
------------------------------- Réponse au message : -------------------------------
Si tu veux quil ny est plus de boucle infini il faut que tu testes la fin du fichier avec EOF
------------------------------- Réponse au message : -------------------------------
Salut, J'ai fait un programme qui charge toutes les chaines séparées par des espaces, et la boucle for ne se termine jamais, car la dèrnière chaine se lit à l'infini.
Code : char Chaines[1000][255]; FILE *fp; fp=fopen("fichier.txt","r"); for(int i=0;strcmp(temp,"");i++) { fscanf("%s",&temp); } fclose(fp);
|
|
lundi 28 janvier 2002 à 20:32:45 |
Re : Lire toutes les chaines d'un fichier

MangaII
|
Salut ! Ton idée est pas con, mais j'ai encore des critiques a faire ! Dans ton code, tu fé 2 boucle, ce qui te fé 2 fois plus de temps ! La première ne sert qu'a vérifier la taille du fichier, et pour ca, y'a des fonctions pour ca ! Par exemple, tu utilise fseek pour déplacer le curseur a la fin du fichier, puis ftell pour savoir a quel nombre d'octets se trouve ton curseur !
Ensuite, si tu connais la taille de ton fichier, alors tu pe utiliser une boucle for ! Tu va dire que je me contredit ! mais pas du tout ! c juste que ton idée consiste a chercher la taille du fichier avant de le copier ! alors que par habitude (et c le cas pour bcp de monde), on utilise le fichier direct, sans regarder sa taille avant !
Je suis fétigué ce soir, mais je vé t'écrire un morceo de code qd mm !
avec ta méthode :
FILE *fp,*fp2; char tmp; // tu n'a besoin que d'1 char, ne fé pas un tableo char temp[255]; int count=0,i=0; fp=fopen("test.txt","r"); fp2=fopen("test.txt","w");
fseek(fp,0,SEEK_END); //place le curseur a la fin du fichier count=ftell(fp); // récupère le nombre d'octets fseek(fp,0,SEEK_SET); // replace le cureseur au début du fichier
sprintf(temp,"Nombre d'octets : %d",count); MessageBox(temp,"",MB_OK); for (i=0;i<count;i++) { fread(&tmp,1,1,fp); fwrite(&tmp,1,1,fp2); } fclose(fp); fclose(fp2);
Autre solution :
FILE *fp,*fp2; char tmp[100]; fp=fopen("test.txt","rb"); fp2=fopen("test.txt","wb");
int n; { n = fread(tmp,1,100,fp); fwrite(tmp,1,n,fp2); }while ( !feof(fp) );
fclose(fp); fclose(fp2);
J'ai pas testé ! mais ca doit marcher ! Tu va me demander pk j'utilise un N, et pk j'ai mis le while a la fin ! Pour le N, c juste qu'au lieu de lire 1 seul octet a la fois, j'en lis 100 ! mais comme le fichier n'a pas forcément une taille multiple de 100, la fonction fread, te renvoi le nombre d'octets qu'elle a pu lire ! donc, dans fread, je lui écrit le mm nombre qu'elle a lu ! sinon, c pas bon ! Pour le while a la fin, c juste pour évitre de passer 2 fois le dernier bloc du fichier ! tu verra si tu teste !
j'ai rajouter un B, sur les fopen, pour ouvrir les fichier en binaire, histoire de ne pas être influencé par les caractères autres que alphanumériques !
Voilà ! Fini pour ce soir !
A+ NICO !
PS : amuse toi bien ! j'ai taper tout ca au pif ! alors y'a peut-être des erreurs !
------------------------------- Réponse au message : -------------------------------
En fait, il me refait une boucle infinie !
Mon code :
FILE *fp,*fp2; char tmp[1]; char temp[255]; int count=0,i=0; fp=fopen("test.txt","r"); fp2=fopen("test.txt","w"); while(feof(fp)==0) { count++; } sprintf(temp,"Nombre d'octets : %d",count); MessageBox(temp,"",MB_OK); while(i<count) { fread(tmp,sizeof( char ),1,fp); fwrite(tmp,sizeof( char ),1,fp2); i++; } fclose(fp); fclose(fp2);
------------------------------- Réponse au message : -------------------------------
Re ! Je ne sais pas ou tu as trouvé ta boucle for avec la comparaison, mais tu ne pourra jms avoir un code qui marche en faisant ca ! Dans le cas d'un fchier, tu ne c pas quelle est sa longueur ! Or, par définition, une boucle FOR se répète un nombre défini de fois ! c pas ce que tu ve ! Comm je te l'ai dit pour l'otre mess, utilise une boucle WHILE !
et pour tester si tu est a la fin du fichier, c'est FEOF regarde la doc pour ces fonctions, et tu verra que tu va trouver ton bonheur ! A+ NICO !
------------------------------- Réponse au message : -------------------------------
Si tu veux quil ny est plus de boucle infini il faut que tu testes la fin du fichier avec EOF
------------------------------- Réponse au message : -------------------------------
Salut, J'ai fait un programme qui charge toutes les chaines séparées par des espaces, et la boucle for ne se termine jamais, car la dèrnière chaine se lit à l'infini.
Code : char Chaines[1000][255]; FILE *fp; fp=fopen("fichier.txt","r"); for(int i=0;strcmp(temp,"");i++) { fscanf("%s",&temp); } fclose(fp);
|
|
lundi 28 janvier 2002 à 20:38:07 |
Re : Lire toutes les chaines d'un fichier

JMGR
|
Merci :) Bonne nuit :)
------------------------------- Réponse au message : -------------------------------
Salut ! Ton idée est pas con, mais j'ai encore des critiques a faire ! Dans ton code, tu fé 2 boucle, ce qui te fé 2 fois plus de temps ! La première ne sert qu'a vérifier la taille du fichier, et pour ca, y'a des fonctions pour ca ! Par exemple, tu utilise fseek pour déplacer le curseur a la fin du fichier, puis ftell pour savoir a quel nombre d'octets se trouve ton curseur !
Ensuite, si tu connais la taille de ton fichier, alors tu pe utiliser une boucle for ! Tu va dire que je me contredit ! mais pas du tout ! c juste que ton idée consiste a chercher la taille du fichier avant de le copier ! alors que par habitude (et c le cas pour bcp de monde), on utilise le fichier direct, sans regarder sa taille avant !
Je suis fétigué ce soir, mais je vé t'écrire un morceo de code qd mm !
avec ta méthode :
FILE *fp,*fp2; char tmp; // tu n'a besoin que d'1 char, ne fé pas un tableo char temp[255]; int count=0,i=0; fp=fopen("test.txt","r"); fp2=fopen("test.txt","w");
fseek(fp,0,SEEK_END); //place le curseur a la fin du fichier count=ftell(fp); // récupère le nombre d'octets fseek(fp,0,SEEK_SET); // replace le cureseur au début du fichier
sprintf(temp,"Nombre d'octets : %d",count); MessageBox(temp,"",MB_OK); for (i=0;i<count;i++) { fread(&tmp,1,1,fp); fwrite(&tmp,1,1,fp2); } fclose(fp); fclose(fp2);
Autre solution :
FILE *fp,*fp2; char tmp[100]; fp=fopen("test.txt","rb"); fp2=fopen("test.txt","wb");
int n; { n = fread(tmp,1,100,fp); fwrite(tmp,1,n,fp2); }while ( !feof(fp) );
fclose(fp); fclose(fp2);
J'ai pas testé ! mais ca doit marcher ! Tu va me demander pk j'utilise un N, et pk j'ai mis le while a la fin ! Pour le N, c juste qu'au lieu de lire 1 seul octet a la fois, j'en lis 100 ! mais comme le fichier n'a pas forcément une taille multiple de 100, la fonction fread, te renvoi le nombre d'octets qu'elle a pu lire ! donc, dans fread, je lui écrit le mm nombre qu'elle a lu ! sinon, c pas bon ! Pour le while a la fin, c juste pour évitre de passer 2 fois le dernier bloc du fichier ! tu verra si tu teste !
j'ai rajouter un B, sur les fopen, pour ouvrir les fichier en binaire, histoire de ne pas être influencé par les caractères autres que alphanumériques !
Voilà ! Fini pour ce soir !
A+ NICO !
PS : amuse toi bien ! j'ai taper tout ca au pif ! alors y'a peut-être des erreurs !
------------------------------- Réponse au message : -------------------------------
En fait, il me refait une boucle infinie !
Mon code :
FILE *fp,*fp2; char tmp[1]; char temp[255]; int count=0,i=0; fp=fopen("test.txt","r"); fp2=fopen("test.txt","w"); while(feof(fp)==0) { count++; } sprintf(temp,"Nombre d'octets : %d",count); MessageBox(temp,"",MB_OK); while(i<count) { fread(tmp,sizeof( char ),1,fp); fwrite(tmp,sizeof( char ),1,fp2); i++; } fclose(fp); fclose(fp2);
------------------------------- Réponse au message : -------------------------------
Re ! Je ne sais pas ou tu as trouvé ta boucle for avec la comparaison, mais tu ne pourra jms avoir un code qui marche en faisant ca ! Dans le cas d'un fchier, tu ne c pas quelle est sa longueur ! Or, par définition, une boucle FOR se répète un nombre défini de fois ! c pas ce que tu ve ! Comm je te l'ai dit pour l'otre mess, utilise une boucle WHILE !
et pour tester si tu est a la fin du fichier, c'est FEOF regarde la doc pour ces fonctions, et tu verra que tu va trouver ton bonheur ! A+ NICO !
------------------------------- Réponse au message : -------------------------------
Si tu veux quil ny est plus de boucle infini il faut que tu testes la fin du fichier avec EOF
------------------------------- Réponse au message : -------------------------------
Salut, J'ai fait un programme qui charge toutes les chaines séparées par des espaces, et la boucle for ne se termine jamais, car la dèrnière chaine se lit à l'infini.
Code : char Chaines[1000][255]; FILE *fp; fp=fopen("fichier.txt","r"); for(int i=0;strcmp(temp,"");i++) { fscanf("%s",&temp); } fclose(fp);
|
|
Cette discussion est classée dans : fichier, lire, chaines, for, fp
Répondre à ce message
Sujets en rapport avec ce message
Lire dans un fichier [ par SfyLer ]
C'est bon j'ai fini mon programme ! enfin presque ! :')J'aimerais lire dans un fichier, donc je l'ouvre et j'utilise ceci:char szBuffer[5000];while(!(
Lire un fichier via HTTP [ par yugiohjcj ]
Bonjour,je programme en C et je sais ouvrir/lire/écrire un fichier grâce à fopen() sur mon disque dur. Mais là, je veux faire exactement pareil sauf q
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
fichiers en C [ par boualiasma ]
Salut, 1) Dans mon travail, j'utilise des fichiers. je crée un fichier "essai.txt" pour le remplir fp = fopen("essai.txt","w"); // je fais des tra
ECRITURE FICHIER LOGFONT [ par lectpe ]
Bonjourdans mon application, j'utilise un fenêtre de dialogue de sélection de police d'écriture :VOID SelectMainFont(HWND hwnd, HWND hRichEdit){ Zer
tri alphabétique ultra rapide de chaines de caractères de longueur variable [ par mslider ]
-- Bonjour, je sais que c'est un forum dédié au C mais je vais parler de pascal. En effet je connais bien ce langage et je l'ai utilisé pour trier a
ouverture d'un gros fichier txt ( taille > 3Mo) [ par malouve ]
Bonjour, J'ai a traité des fichiers txt de valeurs dont je ne connais pas le nombre d'elements mais qui font plus de 3Mo. J'ai essayé la fonction fre
Optimisation fread() découpe de fichier [ par tbpacker ]
Bonjour à tous,Je me demandais pour l'utilisation de fread dans quels cas d'argument a t'on les meilleures performances?1-Lire un packet de n octets 1
lire et ecrire dans un fichier [ par b4zeus ]
bonjour tout le monde, j'ai un probleme qui est que je ve transformé un fichier median.dat sous la forme8 5 -1 8 4 -1 8 3 -19 3 -1 9 2 -1 9 1 -1et cré
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
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|