IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

les fichiers en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 36
    Par défaut les fichiers en c
    Bonsoir a tout le monde,

    En fait,je suis débutant en C,et je veux lire un fichier texte(test.txt) qui contient des données sous forme matrice
    et l'affiche sur le console
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    #include <stdio.h>
    #define MAX_LIGNE 10   /* au maximum, 10 lignes */
    #define MAX_COL    8   /* au maximum 8 colonnes */
    #define NOM_A_LIRE "C:\\test.txt" /*matrice a lire*/
    typedef float Matrice[MAX_LIGNE] [MAX_COL];
    /*fonction lire qui lit la matrice (sous forme de fichier .txt)*/
    void lire(FILE * aLire, Matrice mat, int nbLigne, int nbCol) {
       int i, j ;
       for (i = 0 ; i < nbLigne; i++) {
     	  for (j = 0 ; j < nbCol; j++)
           fscanf(aLire, "%f", &mat[i] [j]);
     	  fscanf(aLire, "\n" );
       }
    void afficher(Matrice mat, char nom[], int nbLigne, int nbCol)
    {
       int i, j ;
       printf("\nContenu de la matrice %s de %d ligne(s) et %d colonne(s) :\n",nom, nbLigne, nbCol);
       for (i = 0 ; i < nbLigne; i++) {
     	  for (j = 0 ; j < nbCol; j++)
           printf("%6.2f ", mat[i] [j]);
     	  printf("\n" );
       }
       printf("\n" );
    }
    int main(void)
    {
    Matrice A;
    int  m, n;
        /* ouvrir le fichier Matrices.dta sur le disque réseau pour la lecture */
    FILE * aLire = fopen(NOM_A_LIRE, "r" ) ;
     if(aLire == NULL)
        {
           printf("Le fichier n'existe pas" );
        }
     else
     {          fscanf(aLire,"%d%d\n", &m, &n);
       lire (aLire, A, m, n);
       afficher(A, "A", m, n);
     }
    fclose(aLire);
    return 0;
    }
    mais il plante et affiche "
    attention : 'main' is normally a non-static function [-Wmain]
    erreur: expected declaration or statement at end of input
    Est ce que quelqu'un peut m'aider je serai trés reconnaissant
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void lire(FILE * aLire, Matrice mat, int nbLigne, int nbCol) {
       int i, j ;
       for (i = 0 ; i < nbLigne; i++) {
     	  for (j = 0 ; j < nbCol; j++)
           fscanf(aLire, "%f", &mat[i] [j]);
     	  fscanf(aLire, "\n" );
       }
    Il ne manquerait pas un petit "}" à la fin ?

    Essaye de mettre 2 retours à la lignes entre tes fonctions, il te sera alors plus facile de repérer ce genre d'erreur.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 36
    Par défaut
    Merci pour votre réponse
    mais le résultat ne s'affiche pas correctement ,il n'affiche pas le contenu de la matrice .voila ce qu'il m'affiche :
    Contenu de la matrice A de 2 ligne(s) et 1 colonne(s):
    0.00
    1.00
    étant donnée que mon fichier test est ci joint
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    C'est normal : ton fichier test est :
    2 1 0
    1
    4 2
    4 2 10
    Il lit m et n qui prennent les valeurs 2 et 1 puis il lit les deux éléments de la matrice 2x1 qui sont 0 et 1

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 36
    Par défaut
    Merci beaucoup ça marche très bien

    En fait j'ai une autre question, je veux faire des modifications sur cette matrice et je veux afficher le résultat(matrice modifié après calcul) dans le console
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void calculermatrice (Matrice mat, int nbLigne, int nbCol)
    {
    	int i, j,k ;
     
        for(j=0;j<nbCol;j++)
          for(k=1;k<j-1;k++)
           {
               mat[j][j]=mat[j][j]-(mat[j][k]*mat[j][k]*mat[k][k]);
           }
    .....
    et dans le int main j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    int main(void)
    {
    	Matrice A;
    	int  m, n;
        /* ouvrir le fichier Matrices.dta sur le disque réseau pour la lecture */
    	FILE * aLire = fopen(NOM_A_LIRE, "r") ;
    	 if(aLire == NULL)
        {
           printf("Le fichier n'existe pas");
        }
    	 else
     
    	 {                     fscanf(aLire,"%d %d\n", &m, &n);
    				lire (aLire, A, m, n);
    				afficher(A, "A", m, n);
    				calculermatrice (A,m,n);
    				afficher(A, "A", m, n);
    	 }
    fclose(aLire);
    return 0;
     
    }
    pour le résultat il m'affiche la matrice initiale sans modification

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    mots clés: passage par valeur, passage par référence, pointeur.

    les arguments d'une fonction sont passés par copie. le Matrice dans la fonction est une copie de celle passée en argument.

    Si ta fonction prenait un pointeur sur Matrice, il y a aurait copie du pointeur, mais cette copie pointerait sur la même Matrice, que tu pourrais du coup modifier.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TP]comment creer une disquette bootable (les fichiers)
    Par ludovic5532 dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 25/10/2003, 18h46
  2. Réponses: 4
    Dernier message: 16/08/2003, 13h21
  3. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  4. [TP]Lister les fichiers d'un répertoire
    Par nvtitan dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 21/06/2002, 11h22
  5. Les fichiers d'un projet
    Par Manolo dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/05/2002, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo