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 :
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.
Comment vous représentez-vous ça : l'endroit ou l'espace se termine ? | Iss Live Feed
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
Comment vous représentez-vous ça : l'endroit ou l'espace se termine ? | Iss Live Feed
(Des tableaux 3x9 qui pourraient représenter des cartons de loto...)
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.