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 :

programme en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par défaut programme en c
    bonsoire tous le monde je suis débutant au structure des fichiers j'ai un fichier .txt je veux le lire son contenu(les données ) puis le mettre dans un tableau et l'affiche ,mon probleme est dans l'affichage ,il affiche des autres données!!!!!!!
    voila le programme
    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
    #include<stdio.h> 
    #include<string.h> 
    #include<stdlib.h> 
     
    int i; 
    float X[10]; 
    float c; 
    FILE * XI; 
    void CHARGER_BASE_DES_X() 
    { 
     
    XI=fopen("XI.txt","r"); 
    fscanf(XI,"%f",&X[i]); 
     
    while ((c = fgetc(XI)) != EOF) 
    { 
    for(i=1;i<=10;i++) 
     
    { 
    X[i]=c; 
     
    } 
     
     
     
    } 
    fclose(XI); 
    } 
    void main() 
    { 
    CHARGER_BASE_DES_X(); 
    for(i=1;i<=10;i++) 
    { 
    printf("%f\n",X[i]); 
    } 
    }
    pouvez vous m'aide?merci d'avance.

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    il affiche des autres données!!!!!!!
    Peux tu nous monter ce qu'il affiche ?

    à ce moment du code, i n'est pas initialisé, le code a donc un comportement indéfini.

    Tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while ((c = fgetc(XI)) != EOF) 
    { 
        for(i=1;i<=10;i++) 
        { 
            X[i]=c; 
        } 
    }
    • Tu lis un caractère depuis le fichier;
    • Tu copie ce caractère dans tous les éléments de ton tableau de flottants...


    Ce qu'il faudrait faire c'est :
    • Lire un flottant depuis le fichier
    • Copier le flottant dans la case suivante du tableau :


    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
    /* flottant temporaire dans lequel on va stocker ce qu'on a 
        lu depuis le fichier */
    float tmp;
    /* case du tableau ou écrire */
    int i = 0;
    while(1 == fscanf(fichier, "%f", &tmp)) {
        /* copie du flottant dans le tableau */    
        X[i] = tmp;
        /* case suivante */
        ++i;
        /* vérification si la fin de tableau est atteinte */
        if(i >= TAILLE_TABLEAU) {
            /* sortie de boucle while */
            break;
        }
    }

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par défaut
    merci beaucoup pour la correction et les remarques

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Et j'ai oublié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        for(i=1;i<=10;i++) 
        { 
            printf("%f", X[i]); 
        }
    Tu dépasses la capacité du tableau X : en C, les indices de tableaux commencent à 0, il aurait fallut écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        for(i = 0; i < 10 ; i++) 
        { 
            printf("%f", X[i]); 
        }

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par défaut
    merci
    je veux mettre le fichier txt dans une matrice
    mais j'ai des errures voila le code
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    #include<stdio.h> 
     
    #include<string.h> 
     
    #include<stdlib.h> 
     
     
     
    int  X[10][7],d[10];             
     
    float W[7];
     
    /*********************************/
     
    void chargerBaseDesX() 
     
    {
     
    	FILE* XI = fopen("XI.txt","r");
     
     
     
    	int i,j; 
     
     
     
    	for(i=0; i<10; i++)
     
     
     
    	for(j=0; j<7; j++)
     
    	{
     
    		if (EOF == fscanf(XI,"%d%d",X+i,X+j)) 
     
    			break;
     
    	}
     
     
     
    	fclose(XI); 
     
    } 
     
     
     
     
     
    int main() 
     
    {
     
    	int j,i; 
     
    	chargerBaseDesX();	 
     
    for(i=0; i<10; i++)
     
    for(j=0; j<7; j++)
     
    {
     
     
     
    	printf("%d%d\n",X[i][j]);
     
     
     
     
     
     
     
    }
     
     }

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Voilà ce que me donne gcc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    warning: format '%d' expects type 'int *', but argument 3 has type 'int (*)[7]'
    warning: format '%d' expects type 'int *', but argument 4 has type 'int (*)[7]'
    Que veux tu faire quand tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fscanf(XI,"%d%d",X+i,X+j)
    Ne voulais tu pas écrire plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fscanf(XI,"%d",&X[i][j])
    ?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    warning: too few arguments for format
    Le format dans printf est %d%d : tu veux donc écrire deux entiers, or tu n'en fournis qu'un seul.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    warning: control reaches end of non-void function
    Il manque un à la fin du main.

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

Discussions similaires

  1. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  3. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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