begin process at 2010 02 10 06:22:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > LECTURE ÉCRITURE DONNÉES

LECTURE ÉCRITURE DONNÉES


 Information sur la source

Note :
5 / 10 - par 2 personnes
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichiers / Disque Niveau :Débutant Date de création :30/08/2004 Date de mise à jour :31/08/2004 09:51:08 Vu :3 981

Auteur : bethany

Ecrire un message privé
Commentaire sur cette source (26)
Ajouter un commentaire et/ou une note

 Description

Voici ma source, avis a ceux qui veulent tester...

Source

  • //MPBC_C fichier : 'miaou.cpp' traité par le MetaProgramme MétaProg de Bruno CELLE - vers 5.0.4
  • /// ----- MaJ le 31/08/04 : par bethany & magic_nono
  • /// ----- Créé le 30/08/04 : par bethany & magic_nono
  • /// ----- Objectif général : TODO
  • /// ----- Développé pour : 1 exercice C...
  • /// ----- Chemin original : C:\Documents and Settings\Luc\Bureau\miaou.cpp
  • /// ----- Nota: dans InOut peuvent être repérées des var In : aucun indice formel ne permet de noter le masquage du passage par parametre... ex : f(T i){i++;} a un effet différent si T:int ou \"#define T int&\".
  • #include <stdlib.h>
  • #include <stdio.h>
  • #define MAX 1024
  • main()
  • {
  • /// ----------------------------------------
  • /// ---------------- main() ----------------
  • /// ----------------------------------------
  • /// ----- Objectif : Lanceur du projet
  • /// ----- Auteur(s) : bethany & magic_nono 31/08/04
  • /// ----- PreCond : /
  • /// ----- PostCond : /
  • /// ----- Etat : 1 (-1<0<1<2)
  • /// ----------------------------------------
  • /// ----- Var Internes à la fonction (3) : buffer ,fp ,saisie
  • /// ----- Var Utilisées par adresse (1) : buffer
  • /// ----- Var Masquées (2) : buffer ,fp
  • /// ----- Var In Globales Constantes (1) : EOF
  • FILE*fp;
  • double saisie;
  • char buffer[512];
  • {
  • fp=fopen("C:\\fichier.txt","w");
  • if(fp == NULL)
  • {
  • fprintf(stderr,"Impossible d'ouvrir le fichier desire.\nVerifier que le fichier existe bien.");
  • return-1;
  • }
  • printf("\tSortie avec 0\n\n ");
  • while(saisie!= 0)
  • {
  • printf("Tapez un nombre: ");
  • fflush(stdout);
  • fflush(stdin);
  • fgets( buffer, sizeof buffer, stdin );
  • fflush(stdin);
  • fflush(stdout);
  • saisie=atof(buffer);
  • if(saisie != 0)
  • fprintf(fp,"%f\n", saisie);
  • }
  • fclose(fp);
  • }
  • {
  • fp=fopen("C:\\fichier.txt","r");
  • if(fp == NULL)
  • {
  • fprintf(stderr,"Impossible d'ouvrir le fichier desire.\nVerifier que le fichier existe bien.");
  • return-1;
  • }
  • while(fgets( buffer, sizeof buffer, fp))
  • {
  • saisie=atof(buffer);
  • printf("%f\n", saisie);
  • }
  • fclose(fp);
  • }
  • return 0;
  • }
//MPBC_C fichier : 'miaou.cpp' traité par le MetaProgramme MétaProg de Bruno CELLE - vers 5.0.4
/// ----- MaJ le 31/08/04 : par bethany & magic_nono
/// ----- Créé le 30/08/04 : par bethany & magic_nono
/// ----- Objectif général : TODO
/// ----- Développé pour : 1 exercice C...
/// ----- Chemin original  : C:\Documents and Settings\Luc\Bureau\miaou.cpp
/// ----- Nota: dans InOut peuvent être repérées des var In : aucun indice formel ne permet de noter le masquage du passage par parametre... ex : f(T i){i++;} a un effet différent si T:int ou \"#define T int&\".

#include <stdlib.h>
#include <stdio.h>
#define MAX 1024



main()
{
/// ----------------------------------------
/// ---------------- main() ----------------
/// ----------------------------------------
/// -----  Objectif : Lanceur du projet
/// -----  Auteur(s) : bethany & magic_nono 31/08/04
/// -----  PreCond : /
/// -----  PostCond : /
/// -----  Etat : 1 (-1<0<1<2)
/// ----------------------------------------
/// -----  Var Internes à la fonction (3) : buffer ,fp ,saisie
/// -----  Var Utilisées par adresse (1) : buffer
/// -----  Var Masquées (2) : buffer ,fp
/// -----  Var In  Globales Constantes (1) : EOF

	FILE*fp;
	double saisie;
	char buffer[512];
	
	{
		fp=fopen("C:\\fichier.txt","w");
		if(fp == NULL)
		{
			fprintf(stderr,"Impossible d'ouvrir le fichier desire.\nVerifier que le fichier existe bien.");
			return-1;
		}
		printf("\tSortie avec 0\n\n ");
		while(saisie!= 0)
		{
			printf("Tapez un nombre: ");
			fflush(stdout);
			fflush(stdin);
			fgets( buffer, sizeof buffer, stdin );
			fflush(stdin);
			fflush(stdout);
			saisie=atof(buffer);
			if(saisie != 0)
				fprintf(fp,"%f\n", saisie);
		}

		fclose(fp);
	}

	{
		fp=fopen("C:\\fichier.txt","r");
		if(fp == NULL)
		{
			fprintf(stderr,"Impossible d'ouvrir le fichier desire.\nVerifier que le fichier existe bien.");
			return-1;
		}
		while(fgets( buffer, sizeof buffer, fp))
		{
			saisie=atof(buffer);
			printf("%f\n", saisie);
		}
		fclose(fp);
	}
	return 0;
}

 Conclusion

Programme qui récupere des données a l'écran, puis les ecrit sur un fichier, puis va les relire pour les afficher à l'écran.
Merci a Magic_Nono pour son aide :)


 Historique

30 août 2004 17:27:31 :
30 août 2004 17:48:47 :
31 août 2004 09:27:35 :
31 août 2004 09:51:08 :

 Sources du même auteur

Source avec une capture MISE EN ORDRE ALPHABETIQUE DE 2 CHAINES SANS UTILISER STRCMP...

 Sources de la même categorie

Source avec Zip Source avec une capture ID3 TAG COVER ALBUM IMAGE par nanonavich
FILEREADER par FrancoisGauthier
Source avec Zip CLASSE AVANCÉE DE LOG, THREAD SAFE ET DIVERSES SURCHARGES par sboli
Source avec Zip Source avec une capture Source .NET (Dotnet) INFILESEEKER par swonder
Source avec Zip Source avec une capture USB DETECTION par abandonware

Commentaires et avis

Commentaire de magic_Nono le 30/08/2004 16:59:49

k tes comparaisons doivent etre pour des float
=> pas de guillemet !!!

Commentaire de djl le 30/08/2004 17:10:20

et 0.f en c, et verifie le mode d'ouverture du fichier et commence par apprendre le c (au moins quelques bases) car ca ne te servira a rien si on te donne le code tout cuit

Commentaire de bethany le 30/08/2004 17:16:38

Mais j'en fais du c, t'es marrant toi !!!!

Oui j'ai pas vérif la 2eme fois l'ouverture, je demandais de l'aide parce que je voyais pas comment traiter le probleme...
Ya quelque petit truc que je connais pas super (genre nous en cours on avait vu le %5.2f par exemple et pas %0.f ),
mais ce n'est pas parce que j'y arrive pas super ke je connais pas le C, j'en connais une partie, et pas tout c sur...

Commentaire de magic_Nono le 30/08/2004 17:16:54

soluce :


#include <stdlib.h>
#include <stdio.h>
#define MAX 1024
main()
{
FILE *fp; // pointeur sur le fichier a ecrire
double saisie; // var pour la saisie
char buffer[512];

{
    fp=fopen("C:\\fichier.txt", "w");
    
    if(fp == NULL)
    {
        printf("Impossible d'ouvrir le fichier desire.\nVerifier que le fichier existe bien.");
        return -1;
    }
printf("\tSortie avec 0\n\n ");

    while(saisie!= 0) // boucle de saisie
    {
        printf("Tapez un nombre: ");
        //
//if( sscanf( buffer, "%f" , &saisie ) == EOF ) continue;
        fflush(stdout);
        fflush(stdin);
        //scanf("%f", &saisie); // on range saisie dans variable
fgets( buffer, sizeof buffer, stdin );

fflush(stdin);
        fflush(stdout);
        //if( scanf("%f", &saisie) == EOF )
// while( fgetc(stdin) != EOF );

saisie=atof(buffer);
        if(saisie != 0) // si different de 0
        {
            fprintf(fp, "%f\n", saisie); // ecrirture du nombre dans le fichier
        }
    }
        fclose(fp);
}

{
    fp=fopen("C:\\fichier.txt", "r");
     while(fgets( buffer, sizeof buffer, fp))
{
if(buffer[0]!=EOF)
{
// fscanf(fp, "%f", &saisie);
saisie=atof(buffer);
printf("%f\n", saisie);
}
    }
fclose(fp);
}
return 0;

}

Voila
Magic_nono

Commentaire de bethany le 30/08/2004 17:17:56

Et puis la je ne sais pas trop quoi garder, quoi virer... c'est pour ca que cela fait 'brouillon' ...

Commentaire de magic_Nono le 30/08/2004 17:22:07

ben t'a la soluce, vire les com si tu ve


++
beth

Commentaire de bethany le 30/08/2004 17:26:45

Merci pour la source mais je ne comprend pas certaines choses, je vais les notées en vert sur ma source que je vais modifier maintenant...

Commentaire de BruNews le 30/08/2004 17:41:38 administrateur CS

Rappel:

ne pas confondre une source sur CS et un exercice perso. On dira qu'ici ça entrait dans la seconde categorie.

BruNews, Admin CS, MVP VC++

Commentaire de magic_Nono le 30/08/2004 17:54:44

C clair

Commentaire de bethany le 30/08/2004 18:12:02

J'ai modifié :)
c'est mieux ainsi :) ;)

Commentaire de magic_Nono le 30/08/2004 18:17:18

if(buffer[0]!=EOF)
est inutil

++

Commentaire de djl le 30/08/2004 18:31:00

bethany > tu fais du c depuis combien de temps ? parce que ca s'apprends pas en une semaine de cours...

pour moi les trucs du genre

fp=fopen("C:\\fichier.txt", "w"); (il faut ouvrir en lecture)
ou
fflush(stdin);
montrent qu'il y a encore quelques trucs que tu n'a pas compris

et ne créer pas de blocs inutilent ! (surtout sans savoir ce que ca implique)

Commentaire de bethany le 31/08/2004 09:25:29

Bah ca va faire un an que je fais du C (sachant que je suis en alternance 2 mois 2 mois soit 6 mois de C avec 3 heures par semaines) et bien je sais ce qu'est fopen (la premiere fois qu'on l'ouvre faut bien écrire dedans, regarde bien) et le ffliush c'est écrit dans mon cours mais on ne l'a pas encore étudié !!!
Et j'avoue l'histoire des blocs, j'ai pas trop saisi, on a pas vu ca en cours !!!!

Commentaire de magic_Nono le 31/08/2004 09:41:16

kikou

ce qu'il appelle des blocs c'est les jeux d'accolades...

Sinon, ça remarque n'est pas très explicite, je pense qu'il précisera exactement ce qu'il veux dire par là.

Pour ne pas te perturber, j'ai conservé la majorité de ton code d'origine et n'ai pas tout réécrit...

Bon, je passe ça par la moulinette MétaProg et je te donne un résultat qui ira encore mieu...

(seule modif manuelle : stderr...)

[code]
//MPBC_C fichier : 'miaou.cpp' traité par le MetaProgramme MétaProg de Bruno CELLE - vers 5.0.4
/// ----- MaJ le 31/08/04 : par bethany & magic_nono
/// ----- Créé le 30/08/04 : par bethany & magic_nono
/// ----- Objectif général : TODO
/// ----- Développé pour : 1 exercice C...
/// ----- Chemin original  : C:\Documents and Settings\Luc\Bureau\miaou.cpp
/// ----- Nota: dans InOut peuvent être repérées des var In : aucun indice formel ne permet de noter le masquage du passage par parametre... ex : f(T i){i++;} a un effet différent si T:int ou \"#define T int&\".

#include <stdlib.h>
#include <stdio.h>
#define MAX 1024



main()
{
/// ----------------------------------------
/// ---------------- main() ----------------
/// ----------------------------------------
/// -----  Objectif : Lanceur du projet
/// -----  Auteur(s) : bethany & magic_nono 31/08/04
/// -----  PreCond : /
/// -----  PostCond : /
/// -----  Etat : 1 (-1<0<1<2)
/// ----------------------------------------
/// -----  Var Internes à la fonction (3) : buffer ,fp ,saisie
/// -----  Var Utilisées par adresse (1) : buffer
/// -----  Var Masquées (2) : buffer ,fp
/// -----  Var In  Globales Constantes (1) : EOF

FILE*fp;
double saisie;
char buffer[512];
{
fp=fopen("C:\\fichier.txt","w");
if(fp == NULL)
{
fprintf(stderr,"Impossible d'ouvrir le fichier desire.\nVerifier que le fichier existe bien.");
return-1;
}
printf("\tSortie avec 0\n\n ");
while(saisie!= 0)
{
printf("Tapez un nombre: ");
fflush(stdout);
fflush(stdin);
fgets( buffer, sizeof buffer, stdin );
fflush(stdin);
fflush(stdout);
saisie=atof(buffer);
if(saisie != 0)
fprintf(fp,"%f\n", saisie);
}
fclose(fp);
}
{
fp=fopen("C:\\fichier.txt","r");
if(fp == NULL)
{
fprintf(stderr,"Impossible d'ouvrir le fichier desire.\nVerifier que le fichier existe bien.");
return-1;
}
while(fgets( buffer, sizeof buffer, fp))
{
saisie=atof(buffer);
printf("%f\n", saisie);
}
fclose(fp);
}
return 0;
}
[/code]

Commentaire de djl le 31/08/2004 14:15:08


je voulais juste dire de ne pas creer de blocs inutiles, ce ne peut que reduire la lisibilité du code ( ca sert surtout pour etablir ceraines regles de portées ou pour les structures de controles)

ne fais jamais fflush(stdin)


saisie=atof(buffer);
if(saisie != 0)
fprintf(fp,"%f\n", saisie);

0 est un entier, 0.0 est un double, et tu fais comment si justement le reel lu est 0 ? utilises plutot sscanf si tu veux gérer l'erreur pour de vrai

jamais de printf pour afficher une simple chaine (sans formatage), c'est plus rapide avec puts()
pareil pour fprintf(stderr, "..." ), fais plutot
fputs( "...", stderr)

Commentaire de bethany le 31/08/2004 14:21:36

Bah le 0 fait sortir... :s

Commentaire de djl le 31/08/2004 14:28:35

oui, ok

le probleme avec les fonctions ato*, c'est que ca retourne 0 en cas d'erreur, on ne peut pas savoir si il y a reelement  une erreur

Commentaire de magic_Nono le 31/08/2004 14:30:38

djl> k
ceci po compris ton histoire de fopen

djl> saurais tu récupérer avec un scanf directement le nb???
ça marche po vraiement en fait

C pr ça que j'aV mis les fflush...

++

Commentaire de djl le 31/08/2004 14:39:49

pour le fopen je m'etais tromper (j'avais pas vu qu'il ecrivais d'abord dedans)


while(saisie!= 0)
{
printf("Tapez un nombre: ");
fflush(stdout);

fgets( buffer, sizeof buffer, stdin );

if( sscanf( buffer, "%f", &saisie) == EOF ) continue;

if(saisie != 0)
fprintf(fp,"%f\n", saisie);
}

de toute facon fflush(stdin) est une erreur

Commentaire de magic_Nono le 31/08/2004 14:48:53

ui, je C C mieu comme ça
j'aurai voulu voir sans passer par un buffer

un truc du style
scanf("%f", &saisie);

Commentaire de djl le 31/08/2004 14:53:13

if( scanf( "%f", &saisie) == EOF )
{
while( getc(stdin) != EOF );
continue;
}


mais avec un buffer c'est mieux, c'est plus logique

Commentaire de magic_Nono le 31/08/2004 14:55:46

getc
tu passe tjs par des car !!!!
mé je crois qu'en fait, on a po le choix

merci
++

Commentaire de djl le 31/08/2004 15:02:23

si tu fais juste

scanf( "%f", &saisie)

ca risque de boucler à l'infinie en cas d'erreur de saisie

Commentaire de bethany le 31/08/2004 15:08:46

J'essais de suivre un peu mais j'avoue je suis un peu larguée parce que la je m'occupe d'un autre programme (pour mon taf)donc ca me perturbe un peu,
Ne croyez pas que je ne m'interesse pas a ce que vous dites, c'est juste qu'il faudra que je reprenne cela à tete reposée :)

Commentaire de magic_Nono le 31/08/2004 15:18:58

djl

d'ou le flush

Commentaire de djl le 31/08/2004 15:20:01

flush( stdin ) ca foire, c'est pas standard, c'est dangereux, c'est illogique...

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,640 sec (3)

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