Partage
  • Partager sur Facebook
  • Partager sur Twitter

Assigner des valeurs d'un fichier txt dans un tab

Sujet résolu
    24 octobre 2019 à 9:32:49

    Bonjour à tous,

    J'essaye aujourd'hui, en partant d'un fichier txt de les intégrer dans un tableau afin de pouvoir manipuler ces données, les trier et les ressortir dans un fichier csv.

     Pour le contexte, c'est un fichier de cartons de jeux du loto structuré de cette façon :

    00001;12;26;37;52;66;02;18;27;53;76;09;38;48;61;82

    00002;29;40;67;70;85;02;14;48;54;65;13;28;30;75;89

    etc....

    Le but de la manœuvre sera de découper chaque ligne en 3 pour créer un carton. chaque lignes contient 5 cases dont certaines peuvent être vide.

    chaque colonne doit être en concordance avec la valeur au dessus. Exemple : ligne 1 colonne 1 valeur = 3, ligne 2 colonne 1 valeur = 8.

    Ligne 1 colonne 4 valeur = 66, ligne 2 colonne 4 valeur = 60.

    J'ouvre mon fichier, j'affiche bien mes lignes mais j'arrive à un moment ou je n'ai aucune idée de comment procéder pour pouvoir stocker mes données. Voici mon code : 

    #include <iostream>
    #include <stdlib.h>
    #include <stdio.h>
    
    //Déclaration variables
    FILE* fichierTxt = NULL;
    FILE* fichierCsv = NULL;
    int caract = 0;
    char tab[];
    
    
    struct carton {
    	int numeroCarton;
    	char ligne1[5], linge2[5], ligne3[5];
    
    };
    
    
    
    
    int main()
    {
    	
    	//Fichier txt
    	 char desCarTxt[] = { "DESCAR.txt" };
    	 char desCarCsv[] = { "DESCAR.csv" };
    
    	//Creation carton
    	struct carton Carton;
    	
    
    	//Ouvre fichier lecture et ecriture
    	fichierTxt = fopen("DESCAR.txt", "r");
    	fichierCsv = fopen("DESCAR.csv", "w");
    
    
    	//T fichierTxt
    	if (fichierTxt != NULL) {
    
    		do {
    			caract = fgetc(fichierTxt); // On lit le caractère
    		
    				printf("%c", caract);
    			
    			}
    			//printf("%c", caract); // On l'affiche	
    	 while (caract != EOF);
    
    
    		fclose(fichierTxt);
    
    
    
    		// fichierCSV
    		if (fichierCsv != NULL) {
    			/*	fputs(buffer, fichierCsv);
    				fclose(fichierCsv); */
    			
    		}
    		else {
    			printf("Impossible d'ouvrir ou d'écrire dans le fichier");
    		}
    
    	}
    	else {
    		printf("Impossible d'ouvrir le fichier txt");
    	}
    
    
    	return 0;
    	
    } 
    
    

    Merci à ceux qui prendrons le temps de m'aider. 



    • Partager sur Facebook
    • Partager sur Twitter
    Comment vous représentez-vous ça : l'endroit ou l'espace se termine ? | Iss Live Feed
      24 octobre 2019 à 15:21:35

      Tu veux les mettre dans un tableau, C'est cela ?

      Alors, il faut que tu crées un tableau de carton (struct carton).

      Par contre pour les extraire du fichier, faut peut-être le faire sous forme d'entier et pas de caractère.

      • Partager sur Facebook
      • Partager sur Twitter
        29 octobre 2019 à 8:30:04

        Hello

        j'ai réussi à avancer un peu mais rien de bien fou... J'arrive à récupérer mes valeurs de mon .txt et les rentrer dans un tableau. Maintenant, j'essaye de "reprendre" le principe de la liste chaîné en testant la valeur de mes valeurs. En gros si dans la case 1 la valeur est supérieur à 0, la valeur est envoyé à la case suivante et la première case passe à 0.

        Cependant, cela ne fonctionne pas pour toutes les cases... Je ne sais pas comment faire pour trier proprement mon tableau.

        //===============================================================================
        //        Projet Loto 
        //===============================================================================
        // 22/10/2019
        //
        //------------------------------------------------------------------------------
        //          FONCTIONNALITES
        //------------------------------------------------------------------------------
        //  Etape 1 : Verification
        //  Etape 2 : 
        //  Etape 3 : 
        //  Etape 4 :
        //	Etape 5 : 
        //
        //*******************************************************************************
        #include <iostream>
        #include <stdlib.h>
        #include <stdio.h>
        #define Taille_Max 28
        #define NBLIGNES 3
        
        
        //Déclaration variables
        FILE* fichierTxt = NULL;
        FILE* fichierCsv = NULL;
        int chaine[Taille_Max] = { 0 };
        int i = 0;
        
        
        struct carton {
        	char* numeroCarton[5];
        	char ligne1[9] = { 0 }, linge2[9] = { 0 }, ligne3[9] = { 0 };
        
        };
        
        
        
        
        int main()
        {
        	
        
        	//Creation carton
        	struct carton Carton;
        
        	//Ouvre fichier lecture et ecriture
        	fichierTxt = fopen("DESCAR.txt", "r");
        	fichierCsv = fopen("DESCAR.csv", "w");
        
        	
        
        	//T fichierTxt
        	if (fichierTxt != NULL) {
        		
        		for (i = 0; i < NBLIGNES; i++) {
        			//Recupere toute la chaine
        			fscanf(fichierTxt, "%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d", &chaine[0],
        				&chaine[1], &chaine[2], &chaine[3], &chaine[4], &chaine[5], &chaine[6], &chaine[7], &chaine[8], &chaine[9],
        				&chaine[10], &chaine[11], &chaine[12], &chaine[13], &chaine[14], &chaine[15]);
        
        
        			
        
        			
        			if (chaine[1] > 10 || chaine[5] > 10 || chaine [10] > 10) {
        
        				for (int n = sizeof(chaine) ; n > 0; n--) {
        					
        					chaine[n+1] = chaine[n];
        				}
        				chaine[1] = 0;
        				chaine[5] = 0;
        				chaine[10] = 0;
        			}
        
        		/*	if (chaine[2] > 20 || chaine[6] > 20 || chaine[11] > 20) {
        
        				for (int n = sizeof(chaine); n > 0; n--) {
        
        					chaine[n + 1] = chaine[n];
        				}
        				chaine[2] = 0;
        				chaine[6] = 0;
        				chaine[11] = 0;
        			}
        		*/
        			
        			//Affiche la chaine
        			printf("%d\n   %d %d %d %d %d\n    %d %d %d %d %d\n    %d %d %d %d %d\n\n", chaine[0],
        				chaine[1], chaine[2], chaine[3], chaine[4], chaine[5], chaine[6], chaine[7], chaine[8], chaine[9],
        				chaine[10], chaine[11], chaine[12], chaine[13], chaine[14], chaine[15]);
        
        		
        
        		}
        
        
        		fclose(fichierTxt);
        	}	
        	else {
        		printf("Impossible d'ouvrir le fichier txt");
        	}
        			// fichierCSV
        			/*if (fichierCsv != NULL) {
        
        				fputs(chaine, fichierCsv);
        			
        
        			}
        			else {
        				printf("Impossible d'ouvrir ou d'écrire dans le fichier");
        			}
        			*/
        
        		
        
        
        
        
        	
        
        	
        
        	
        	
        	
        
        
        	return 0;
        	
        } 
        
        



        Merci à vous.

        J'ai fait une struct, mais je vois pas comment bien l'utiliser... Rentrer les valeurs par lignes et les trier après (?)

        -
        Edité par Syrosh 29 octobre 2019 à 8:32:52

        • Partager sur Facebook
        • Partager sur Twitter
        Comment vous représentez-vous ça : l'endroit ou l'espace se termine ? | Iss Live Feed
          29 octobre 2019 à 14:28:22

          Salut,

          Difficile d'y comprendre quelque chose à ton projet !

          Dis-moi si je me trompe. Tu as ceci dans un fichier :

          00001;12;26;37;52;66;02;18;27;53;76;09;38;48;61;82
          00002;29;40;67;70;85;02;14;48;54;65;13;28;30;75;89

          et tu voudrais cela :

           0 12 26 37  0 52 66  0  0
           2 18 27  0  0 53  0 76  0
           9  0  0 38 48  0 61  0 82
          
           0  0 29  0 40  0 67 70 85
           2 14  0  0 48 54 65  0  0
           0 13 28 30  0  0  0 75 89

          (Des tableaux 3x9 qui pourraient représenter des cartons de loto...)

          • Partager sur Facebook
          • Partager sur Twitter

          Assigner des valeurs d'un fichier txt dans un tab

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown