Structure avec un fichier

Signaler
Messages postés
2
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
6 décembre 2006
-
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
-
Bonjour,

Je doit réaliser pour la fac un programme qui convertit le code morse en caractère. Le code morse est inscrit sur un fichier txt comme suit:
A ._
B _..

Mon but est de récupérer ces valeurs en les mettant chacune dans une structure:
struc code {
                      char lettre;
                       char * morse;
                    }

Le reste du programme a l'aire de fonctionner sauf cette fonction qui permet de récupérer la table de traduction dans un fichier.
Pourriez-vous m'aider??

Merci d'avance

Orangepulpe

5 réponses

Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1
typedef struct
{
        char lettre;
        char morse[6]; //<-- 5 car au max pour le morse avec les chiffres si ma memoire est bonne (+1 pour \0)
 } Code;

ensuite, tu fais:

char lettretmp;
char morsetmp[6];

FILE * file;
file=fopen("fichier.txt","r");
fscanf(file,"%c %s", &lettretmp, morsetmp);
//Tu met dans ta struct
...
fscanf(file,"%c %s", &lettretmp, morsetmp);
// A faire autant de fois qu'il y'a de ligne dans ton fichier
...
fclose(file);

TuRn3r
Messages postés
2
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
6 décembre 2006

Je viens de faire ce que tu m'a érit ci-dessus:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
struct code
{
        char lettre;
        char morse[6];
};


typedef struct code liste;


FILE * file;
file=fopen("fichier.txt","r");


char lettretmp;
char morsetmp[6];
for(i=0; i<=26; i++)
{


fscanf(file,"%c %s", &lettretmp, morsetmp);
liste.lettre[i]=lettretmp;            // il me signale une erreur avant le point??
liste.morse[i]=morsetmp;


printf("%c %c", liste.lettre[i], liste.morse[i]);  //erreur avant liste
}


fclose(file);


}

Je vais essayer de le modifier, je crois que j'ai un problème de pointeur??

orangepulpe
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
#include <stdio.h>

#include <stdlib.h>


typedef struct code


{


        char lettre;


        char morse[6];


}Code;


int main()

{

    int i;

    Code liste[26];
    FILE * file;
    file=fopen("fichier.txt","r");

    char lettretmp;
    char morsetmp[6];
    for(i=0; i<26; i++)
    {

        fscanf(file,"%c %s", &lettretmp, morsetmp);
        liste[i].lettre=lettretmp;            // il me signale une erreur avant le point??
        strcpy(liste[i].morse, morsetmp);

        printf("%c %s", liste[i].lettre, liste[i].morse);  //erreur avant liste
    }

    fclose(file);

    return 0;

}

J'ai pas le temps de tester mais ça devrais fonctionner.

C++ (@++)<!--
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1
Petite question au passage, as tu le droit d'utiliser un peu de C++ (la STL par exemple), ca simplifierai la tache.

TuRn3r
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Ya quelques trucs inutiles. Voici une version corrigé:



#include <stdio.h>
#include <stdlib.h>

#define MAX_CODE 26

typedef struct code
{
       char morse[6];
        char lettre;
}Code;

int main()
{
    FILE * file;
    Code liste[MAX_CODE];
    int i;
    file=fopen("fichier.txt","r");

    if(!file) return 0;

    for(i=0; i<MAX_CODE; i++)
    {
       fscanf(file,"%c %s", &liste[i].lettre, liste[i].morse);
        printf("%c %s", liste[i].lettre, liste[i].morse);
    }

    fclose(file);

    return 0;

}

C++ (@++)<!--