begin process at 2012 05 29 23:07:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

Lecture Fichier TXT


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

Lecture Fichier TXT

samedi 8 décembre 2007 à 17:25:01 | Lecture Fichier TXT

DroledeBx

Bonjour,

j'ai un problème de récupération des données à partir d'un fichier texte.

Chaque ligne de mon fichier txt est sous la forme:
"un_entier un_double un_double"
avec un espace entre chaque nombre.

J'ai déclaré une classe, permettant pour chaque ligne le stockage de ces nombres.
class Item{
int identif; /* qui devra stocker l'entier */
double profit; /* qui devra stocker le premier double */;
double poids; /* qui devra stocker le deuxième double */;
};

J'ai réussi, avec getline notamment, à récupérer la ligne entière sous forme de string. Par contre, impossible de récupérer chaque nombre indépendament comme je le voudrais. Quelqu'un a-t-il une idée ?
Merci d'avance.

DroledeBx
samedi 8 décembre 2007 à 18:20:47 | Re : Lecture Fichier TXT

julienbj

Pour faire très simple: fscanf(file, "%d %f %f", &entier, &float1, &float2);

--
Vive le C
Développeur hard/soft chez AGILiCOM
Savon
samedi 8 décembre 2007 à 18:33:53 | Re : Lecture Fichier TXT

DroledeBx

Ok, super !
merci pour l'idée, j'essaie tout de suite !

DroledeBx
samedi 8 décembre 2007 à 18:49:50 | Re : Lecture Fichier TXT

Neo_Fr

Membre Club
Ecrit et lit tes structures en brut et t'auras plus de pbs.. Ex: #include #include typedef struct _item { int indentif; double profit; double poids; }ITEM, *LPITEM; int main(void) { const char File[] = "C:\\Test.txt\0"; HANDLE hFile; DWORD br, bw; ITEM itm; ZeroMemory(&itm, sizeof(ITEM)); itm.indentif = 10100; itm.profit = 102.4; itm.poids = 70.42; hFile = CreateFile(File, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0); if(hFile == INVALID_HANDLE_VALUE) goto Err; if(!WriteFile(hFile, &itm.indentif, sizeof(int), &bw, 0)) goto Err; if(!WriteFile(hFile, &itm.profit, sizeof(double), &bw, 0)) goto Err; if(!WriteFile(hFile, &itm.poids, sizeof(double), &bw, 0)) goto Err; CloseHandle(hFile); ZeroMemory(&itm, sizeof(ITEM)); hFile = CreateFile(File, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0); if(hFile == INVALID_HANDLE_VALUE) goto Err; if(!ReadFile(hFile, &itm.indentif, sizeof(int), &br, 0)) goto Err; if(!ReadFile(hFile, &itm.profit, sizeof(double), &br, 0)) goto Err; if(!ReadFile(hFile, &itm.poids, sizeof(double), &br, 0)) goto Err; printf("\nindentif = %i", itm.indentif); printf("\nprofit = %g", itm.profit); printf("\npoids = %g\n", itm.poids); Err: if(hFile) CloseHandle(hFile); system("PAUSE"); return 0; } Neo_Fr
samedi 8 décembre 2007 à 19:05:45 | Re : Lecture Fichier TXT

SAKingdom

Membre Club
Neo >> Il s'agit peut-être de nombres entrées à même le fichier (par un éditeur de texte bien sûr).

Ensuite, ton code n'est franchement pas très propre. Même si j'aime bien utiliser les goto là où la situation le permet, ton code en abuse un peu trop.

Puis:
"C:\\Test.txt\0"
Pourquoi mettre '\0' ? Le 0 de fin de chaine est ajouté automatiquement par le compilo.

Les 2 ZeroMemory(&itm, sizeof(ITEM))
Inutiles puisque les structures sont remplient immédiatement après et en cas d'erreur, le résultat n'est pas affiché.

C++ (@++)

samedi 8 décembre 2007 à 19:16:11 | Re : Lecture Fichier TXT

Neo_Fr

Membre Club
Je vois pas ou j'abuse des goto, je les utilise seulement pour la gestion des erreurs, c'est + rapide a taper et ca surchage pas le code avec des CloseHandle et des return partout.. Neo_Fr
samedi 8 décembre 2007 à 19:45:23 | Re : Lecture Fichier TXT

SAKingdom

Membre Club
typedef struct
{
    int indentif;
    double profit;
    double poids;
} ITEM;   
   
int main(void)
{
    const char File[] = "d:\\Test.txt";
    HANDLE hFile;
    DWORD dwDummy;
    ITEM itm;

    itm.indentif = 10100; itm.profit = 102.4; itm.poids = 70.42;

    hFile = CreateFile(File, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
    if(hFile == INVALID_HANDLE_VALUE) goto Error;

    if(WriteFile(hFile, &itm.indentif, sizeof(int), &dwDummy, 0) &&
        WriteFile(hFile, &itm.profit, sizeof(double), &dwDummy, 0) &&
        WriteFile(hFile, &itm.poids, sizeof(double), &dwDummy, 0)) {
            CloseHandle(hFile);

            hFile = CreateFile(File, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
            if(hFile == INVALID_HANDLE_VALUE) goto Error;

            if(ReadFile(hFile, &itm.indentif, sizeof(int), &dwDummy, 0) &&
                ReadFile(hFile, &itm.profit, sizeof(double), &dwDummy, 0) &&
                ReadFile(hFile, &itm.poids, sizeof(double), &dwDummy, 0)) {
                    printf("\nindentif = %i", itm.indentif);
                    printf("\nprofit = %g", itm.profit);
                    printf("\npoids = %g\n", itm.poids);
            }
    }

    CloseHandle(hFile);

Error:

    system("PAUSE");
    return 0;
}

C++ (@++)



Cette discussion est classée dans : fichier, ligne, txt, double, stocker


Répondre à ce message

Sujets en rapport avec ce message

saut de ligne dans un fichier .txt [ par semenzato ] bonjour ,je voudrais savoir comment faire un saut de ligne dans un fichier texte car mon instruction \n n'est pas comprise et il en resulte un carré n lire un fichier txt ligne par ligne [ par lapinrose67 ] Bonsoir,Je developpe un logiciel en C sous Linux, voila mon problème:Je dois lire un fichier texte ligne par ligne et placer chacune d'entre ellesdans Ajouter un CString a chaque ligne fichier TXT [ par kilory ] Salut,j'est un fichier txt que j'ouvre avec la commande fopen et je vourais ajouter a chaque debut de ligne du texte un slach . merci. Ouvrir un fichier txt et stocker son contenu [ par Jarod1980 ] Bonjour tout le monde,Voilà je voudrais faire un programme qui permet d'ouvrir un fichier texte et de stocker son contenu dans une variable de type ta passage à la ligne dans un fichier.txt aprés chaque mot [ par romydamour ] salut à tous, j'ai un souci avec le passage à la ligne dans un fichier texte, j'ai su transférer le contenu de plusieurs fichiers dans un seul et même Lire une ligne d'un fichier txt [ par Arnauti ] Bonjour, je suis débutant en C. J'aimerais bien savoir s'il est possible de lire dans un fichier *.txt une ligne au choix. Si oui, comment est-ce poss Comment récuperer ligne par ligne dans un fichier.txt [ par arsenecouette ] Bonjour à tous,Voila mon second prb de la semaine et je fais donc appel une nouvelle fois à vos connaissances.Dans un fichier.txt, je sauvegarde un ma ecriture saut de ligne dans un fichier [ par mogwai93 ] j'essaie d'ecrire un saut de ligne dans un fichier sauf qu'il ne m'ecrit que 0A au lieu de 0D 0A comment corriger ? merci     hFile = CreateFile(Mon_ supprimer une ligne contenu dans un fichier txt [ par cobra176 ] bonjour a tousje recherche un code permettant de retirer une ligne contenu dans un fichierj'ai vu qu'il existé déja des codes permettant cela mais j'a manipulation d'un fichier [ par Stiko ] slt; c'est une programme pour ouvrire un fichier 'toto.txt', la premiere partie est pour afficher le cntenu de fichier dans la cosole et la deuxiéme


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,359 sec (4)

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