[C] Tableau dans un fichier

achrafcabiste Messages postés 10 Statut Membre -  
 Utilisateur anonyme -
Bonjour,
est ce qu'il ya quelqu'un qui peut me donner un programme en language c qui creér un fichier qui contient un tableau de type entier , mais aussi comment ouvrire ce fichier et accedé a un element par leur indice et mettre a jour ce tableau. merci d'avance.
Configuration: Windows XP
Opera 9.23

2 réponses

  1. Utilisateur anonyme
     
    Voici un petit exemple de ce que tu peux faire pour lire des entiers au clavier et les enregistrer dans un fichier :
    Exemple d'écriture
    #include <stdio.h>
    main()
    {
        char nomfic[21];
        int n, lectureok;
        FILE * sortie;
        
        printf("Nom du fichier a creer : ");
        scanf("%20s", nomfic);
        sortie = fopen(nomfic, "w");
        
        do
            {
                printf("Donnez un entier : ");
                lectureok=scanf("%d", &n);
                if (lectureok==1) fprintf(sortie, "%d\n", n);
            }
        while (lectureok==1);
        
        fclose(sortie);
    }

    Exemple de lecture
    #include <stdio.h>
    main()
    {
        char nomfic[21];
        int n, lectureok;
        FILE * entree;
        
        printf("Nom du fichier a lister : ");
        scanf("%20s", nomfic);
        entree = fopen(nomfic, "r");
        
        do
            {
                lectureok=fscanf(entree, "%d", &n);
                if (lectureok==1) printf("%d\n", n);
            }
        while (lectureok==1 && fgetc(entree)!=EOF);
        
        fclose(entree);
    }


    Essaye de faire quelque chose avec cette exemple et poste à nouveau si tu as besoin d'aide
    0
    1. achrafcabiste Messages postés 10 Statut Membre
       
      oui c'est ca comment creer un fichier contient des entiers.
      maintenant je fait faire un autre programme et accéder a l'une de ces entiers par leur position et afiche ce entier , aprés je le modifier par un autre entiers

      exemple : dans mon fichier j'ai les listes suivantes : 10 35 25 40 15 5

      mois je veux par exemple acceder a la position 2 , a l'ecution le programme affiche l'entier qui a la position 2 c'est 25

      apres je modifier 25 par 55 par exemple
      le fichier devient 10 35 55 40 15 5
      et voila c'est fini.

      en tout cas merci , c'est gentil.
      0
  2. Utilisateur anonyme
     
    Je pense que ca devrait le faire. Attention de bien séparer tes entiers par des tabulations dans ton fichier texte.
    #include <stdio.h>
    #define TAILLE 32
    
    int main(int argc, char *argv[])
    {
      FILE * entree;
      char ligne[TAILLE];
      char cChaineFile[TAILLE];
      char *decoupage;
      int *tableau;
      int i, tailleTab, choix, valeur;
      
      printf("Donnez le nom du fichier à analyser : ");
      fgets(cChaineFile, sizeof cChaineFile, stdin);
      
      /*La chaine contient le retour chariot, il faut donc le supprimer*/
      cChaineFile[strlen(cChaineFile)-1] = '\0';
      
      entree = fopen(cChaineFile, "r");
      
      if(entree == NULL){
        printf("Le fichier spécifié n'existe pas\n");
        system("PAUSE");
        return -1;
      }
      
      tableau = (int *)calloc(1, sizeof(int));
      decoupage = NULL;
      i = 0;
      
      while (fgets(ligne,TAILLE,entree) != NULL){
        decoupage = strtok (ligne, "\t");    
        if(decoupage != NULL){
          tableau[i++] = atoi(decoupage);
        }
        while((decoupage = strtok(NULL, "\t")) != NULL){
          tableau = (int *)realloc(tableau, (i+1) * sizeof(int));
          tableau[i++] = atoi(decoupage);
        }
      }
      fclose(entree);
      tailleTab = i;
      
      printf("Donnez l'indice de l'entier à modifier : ");
      scanf("%d", &choix);
      
      if(choix < 1 || choix > tailleTab){
        printf("L'indice n'est pas situé entre 1 et %d\n", tailleTab);
        system("PAUSE");
        return -2;
      }
      
      printf("Donnez le nouvel entier : ");
      scanf("%d", &valeur);
      
      printf("Ancienne valeur : %d à la position %d\n", tableau[choix-1], choix);
      
      tableau[choix-1] = valeur;
      
      entree = fopen(cChaineFile, "w");
    
      for(i=0;i<tailleTab;i++)
        fprintf(entree, "%d\t", tableau[i]);
      
      fclose(entree);
      
      system("PAUSE");	
      return 0;
    }
    
    0