Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/02/2007, à 18:38

thunderjulien

[resolu] -langage C- fonction et type "FILE"

bonsoir a tous,
je travaille sur un projet en C et je bloque sur l'utilisation d'un fichier dans une fonction.
Voici mon code:

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


void saisie(int *mois, int *annee);
void nombre_jours(int mois,int annee,int *nb_jours);
void temperature(FILE *ftemp,char nom1[],int nb_jours,int mois,int annee,float *temp,float*test);

int main()
{
    FILE*ftemp;
    FILE*fpress;
    FILE*fhydro;
    char nom1[]="temperature",nom2[]="pression",nom3[]="hydrometrie";
    float *temp,*press,*hydro,*test;
    int i,mois,annee,nb_jours;
    
    /*creation du relevé*/
    saisie(&mois,&annee);
    nombre_jours(mois,annee,&nb_jours);
    /*pour test*/
    nb_jours=3;
    /*fin pour test*/
    
    temp=(float*)malloc(nb_jours*sizeof(float));
    test=(float*)malloc(nb_jours*sizeof(float));
    temperature(FILE *ftemp,nom1,nb_jours,mois,annee,&temp,&test);
    //press=(float*)malloc(nb_jours*sizeof(float));
    //hydro=(float*)malloc(nb_jours*sizeof(float));
    
    /*température*/
    printf("\n___________________________________\nsaisie des temperatures de %d/%d. \n___________________________________\n",mois,annee);
    
    /*test du fichier*/
    ftemp=fopen(nom1,"a");
    if(ftemp==NULL)
    {
                  printf("erreur ouverture du fichier");
    }
    fclose(ftemp);
    
    /*ecriture dans le fichier*/
    ftemp = fopen (nom1, "w") ;  /*ouverture du fichier "temperature"*/
    for (i=0 ; i<nb_jours ; i++)                           /*boucle pour ecrire dans le fichier*/
    {
    printf("Entrez la temperature du %d/%d/%d: ",i+1,mois,annee);
    scanf("%f",&temp[i]);
    fprintf (ftemp,"%f\n",temp[i]) ;    /*ecriture du tableau temp*/
    }
    fclose (ftemp) ;                            /*fermeture du fichier*/ 

    /*lecture du fichier*/
    ftemp = fopen (nom1, "r") ;    /*ouverture du fichier*/
    for (i=0 ; i<nb_jours ; i++)                           /*boucle pour lire dans le fichier*/
    {
        fscanf (ftemp, "%f", &test[i]);
    }
    fclose (ftemp);                            /*    fermeture du fichier    */ 

    for (i=0 ; i<nb_jours ; i++)                           /*boucle pour lire dans le fichier*/
    {
        printf("%f",test[i]);
    }
    /*libération memoire*/
    free(temp);
    //free(press);
    //free(hydro);
system("pause");
system("cls");
system("pause");
return(0);
}


void saisie(int *mois, int *annee)
{
     printf("\nsaisir le mois du releve:\n");
    scanf("%d",mois);
    printf("\nsaisir l annee du releve:\n");
    scanf("%d",annee);
}

void nombre_jours(int mois,int annee,int *nb_jours)
{
     if((mois==1)||(mois==3)||(mois==5)||(mois==7)||(mois==8)||(mois==10)||(mois==12))
     {
             *nb_jours=31;
     }
     if((mois==4)||(mois==6)||(mois==9)||(mois==11))
     {
              *nb_jours=30;
     }
     if(mois==2)
     {
                if((annee%4)==0)
                {
                                *nb_jours=29;
                }
                else
                {
                                *nb_jours=28;
                }
     }
}

void temperature(FILE *ftemp,char nom1[],int nb_jours,int mois,int annee,float *temp,float*test)
{
     /*variables locales*/
     int i;
     /*test du fichier*/
    ftemp=fopen(nom1,"a");
    if(ftemp==NULL)
    {
                  printf("erreur ouverture du fichier");
    }
    fclose(ftemp);
    
    /*ecriture dans le fichier*/
    ftemp = fopen (nom1, "w") ;  /*ouverture du fichier "temperature"*/
    for (i=0 ; i<nb_jours ; i++)                           /*boucle pour ecrire dans le fichier*/
    {
    printf("Entrez la temperature du %d/%d/%d: ",i+1,mois,annee);
    scanf("%f",&temp[i]);
    fprintf (ftemp,"%f\n",temp[i]) ;    /*ecriture du tableau temp*/
    }
    fclose (ftemp) ;                            /*fermeture du fichier*/ 

    /*lecture du fichier*/
    ftemp = fopen (nom1, "r") ;    /*ouverture du fichier*/
    for (i=0 ; i<nb_jours ; i++)                           /*boucle pour lire dans le fichier*/
    {
        fscanf (ftemp, "%f", &test[i]);
    }
    fclose (ftemp);                            /*    fermeture du fichier    */ 

    for (i=0 ; i<nb_jours ; i++)                           /*boucle pour lire dans le fichier*/
    {
        printf("%f",test[i]);
    }
}

le probleme est sur les lignes:
void temperature(FILE *ftemp,char nom1[],int nb_jours,int mois,int annee,float *temp,float*test);
temperature(FILE *ftemp,nom1,nb_jours,mois,annee,&temp,&test);

si quelqun peut me dire comment on transmet le parametre de type file.

Merci d'avance
JM

Dernière modification par thunderjulien (Le 08/02/2007, à 19:34)

Hors ligne

#2 Le 08/02/2007, à 19:13

badzil

Re : [resolu] -langage C- fonction et type "FILE"

Tu serais mieux sur développez.com wink

Voici ce que j'ai trouvé: http://www.developpez.net/forums/showthread.php?t=2779

J'ai programmé en C moi aussi il y a quelques temps et ça m'avait également posé problème.

Dernière modification par badzil (Le 08/02/2007, à 20:55)

Hors ligne

#3 Le 08/02/2007, à 19:33

thunderjulien

Re : [resolu] -langage C- fonction et type "FILE"

merci super

Hors ligne