begin process at 2012 05 27 18:26:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > LIRE VALEURS DECIMALES D'UN FICHIER PUIS LES STOCKER DANS UN TABLEAU (C) (FORUM)

LIRE VALEURS DECIMALES D'UN FICHIER PUIS LES STOCKER DANS UN TABLEAU (C) (FORUM)


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichiers / Disque Niveau :Débutant Date de création :27/05/2004 Date de mise à jour :27/05/2004 22:59:19 Vu / téléchargé :6 490 / 296

Auteur : DeAtHCrAsH

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

 Description

J'ai deja posté un code tres proche de celui ci a la seule différence qu'il ne marche que pour des valeurs entieres (1,2,30,40,500,...)
Cette version est effective pour des valeurs décimales(1.23,2.5,2.0,...)

Je poste cette source après avoir recu plusieurs demandes sur le forum concernant  le traitement des valeurs décimales contenu dans un fichiers...

J'espere que ce code sera utile a certains ....

Source

  • #include <stdio.h> // fonction de base(printf, fgets,....)
  • #include <string.h> // strtok() -> decoupage de chaine de caracteres
  • #include <stdlib.h> // atoi -> convertir une chaine de caractere en un entier
  • #define CMAX 400 // Nombre de ligne maximum du tableau
  • #define LMAX 400 // Nombre de colonne maximum du tableau
  • #define MAX_CHAR_PER_LINE 1650 // Nombre de caratere maximum par ligne dans le fichier lu : 3*400+400+1 = 1601 mais j'ai mis 1650 pour arrondir
  • #define SEP " " // Séparateur utilisé dans le fichier
  • #define PATH "d:\\meteo.txt" // Mets l'emplacement de ton fichier contenant les valeurs
  • int main(int argc, char* argv[])
  • {
  • FILE* m_File;
  • int i = 0;
  • int j;
  • float Tab[LMAX][CMAX];
  • char szbuff[MAX_CHAR_PER_LINE];
  • char* token;
  • // On initialise le tableau a -1
  • for(i=0;i<LMAX;i++)
  • {
  • for(j=0;j<CMAX;j++)
  • {
  • Tab[i][j] = -1;
  • }
  • }
  • // On réinitialise le compteur de ligne car i;a été incrémenté lors de l'iniatialisation
  • i = 0;
  • // On ouvre le fichier en lecture seule et en mode texte
  • m_File = fopen(PATH,"rt");
  • // On vérifie qu'il n'y ai pas eu d'erreur pendant l'ouverture du fichier
  • if(!m_File) return 1;
  • // On lit le fichier ligne a ligne et on stocke les valeurs dans un tableau d'entier
  • // La boucle while a l'avantage de permettre la lecture d'un fichier sans connaitre son nombre de ligne exact
  • // et nous évite donc de faire bugger le programme
  • // Le "feof" veut "End Of File". On lit donc jusuqu'à la fin du fichier
  • while(!feof(m_File) && i < LMAX)
  • {
  • j = 0;
  • // On récupere la ligne courante du fichier
  • fgets(szbuff,MAX_CHAR_PER_LINE,m_File);
  • // On decoupe la ligne selon le charactere de séparation SEP (" ")
  • token = strtok(szbuff,SEP);
  • // On lit les éléments découpés un à un et on les stocke dans le tableau Tab
  • while(token != NULL && j < CMAX)
  • {
  • // On stocke la valeur lue dans le tableau
  • Tab[i][j] = atof(token);
  • // On lit l'element suivant retourner par strtok
  • token = strtok(NULL,SEP);
  • // On incremente le compteur des ordonnées
  • j++;
  • }
  • // On incrémente le compteur des abscisses
  • i++;
  • }
  • // On affiche le tableau pour etre sur que tout s'est bien passé... Le \t correspond au caractere tabulation
  • // Le 0.2f indique qu'on doit afficher un float avec 2 decimales après la virugle
  • for(int x=0;x<i;x++)
  • {
  • for(int y=0;y<j;y++)
  • {
  • printf("%0.2f\t",Tab[x][y]);
  • }
  • printf("\n");
  • }
  • return 0;
  • }
#include <stdio.h>								// fonction de base(printf, fgets,....)
#include <string.h>								// strtok() -> decoupage de chaine de caracteres
#include <stdlib.h>								// atoi -> convertir une chaine de caractere en un entier

#define CMAX				400					// Nombre de ligne maximum du tableau
#define LMAX				400					// Nombre de colonne maximum du tableau
#define MAX_CHAR_PER_LINE	1650				// Nombre de caratere maximum par ligne dans le fichier lu : 3*400+400+1 = 1601 mais j'ai mis 1650 pour arrondir
#define SEP					" "					// Séparateur utilisé dans le fichier
#define PATH				"d:\\meteo.txt"		// Mets l'emplacement de ton fichier contenant les valeurs


int main(int argc, char* argv[])
{
	FILE*	m_File;
	int		i = 0;
	int		j;
	float	Tab[LMAX][CMAX];
	char	szbuff[MAX_CHAR_PER_LINE];
	char*	token;

	
	
	// On initialise le tableau a -1
	for(i=0;i<LMAX;i++)
	{
		for(j=0;j<CMAX;j++)
		{
			Tab[i][j] = -1;
		}
	}
	
	// On réinitialise le compteur de ligne car i;a été incrémenté lors de l'iniatialisation
	i = 0;
	
	// On ouvre le fichier en lecture seule et en mode texte
	m_File = fopen(PATH,"rt");

	// On vérifie qu'il n'y ai pas eu d'erreur pendant l'ouverture du fichier
	if(!m_File) return 1;

	// On lit le fichier ligne a ligne et on stocke les valeurs dans un tableau d'entier
	// La boucle while a l'avantage de permettre la lecture d'un fichier sans connaitre son nombre de ligne exact
	// et nous évite donc de faire bugger le programme
	// Le "feof" veut "End Of File". On lit donc jusuqu'à la fin du fichier
	while(!feof(m_File) && i < LMAX)
	{
		
		j = 0;

		// On récupere la ligne courante du fichier
		fgets(szbuff,MAX_CHAR_PER_LINE,m_File);
		
		// On decoupe la ligne selon le charactere de séparation SEP (" ")
		token = strtok(szbuff,SEP);

		// On lit les éléments découpés un à un et on les stocke dans le tableau Tab
		while(token != NULL && j < CMAX)
		{
			// On stocke la valeur lue dans le tableau
			Tab[i][j] = atof(token);
			// On lit l'element suivant retourner par strtok
			token = strtok(NULL,SEP);
			// On incremente le compteur des ordonnées
			j++;
		}
		
		// On incrémente le compteur des abscisses
		i++;
	}


	// On affiche le tableau pour etre sur que tout s'est bien passé... Le \t correspond au caractere tabulation
	// Le 0.2f indique qu'on doit afficher un float avec 2 decimales après la virugle
	for(int x=0;x<i;x++)
	{
		for(int y=0;y<j;y++)
		{
			printf("%0.2f\t",Tab[x][y]);
		}
		printf("\n");
	}

	return 0;

}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip DECOUPAGE CHEMIN FICHIER (FORUM)
Source avec Zip Source avec une capture PARAMETRAGE CARTES RESEAUX (VC++ SANS MFC) (FORUM)
Source avec Zip Source avec une capture DRAG AND DROP DE FICHIERS (MFC) (FORUM)
Source avec Zip TIMER (VC++ SANS MFC) (FORUM)
Source avec Zip Source avec une capture PROGRAME MULTI-DIALOG (VC++ SANS MFC) (FORUM)

 Sources de la même categorie

COMPTER LE NOMBRE DE PAGES D'UN FICHIER PDF par Renfield
Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel

Commentaires et avis

Commentaire de sabrina12cara le 11/05/2012 21:38:37

vous parllez de l'emplacement du fichier ("d:\\meteo.txt").
j'ai utiliser ce code pour programmer  mai se ne donne rien ,mrci de me repondr c'est urgent!!!!!!!!

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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