[C] Tableau dans un fichier

Fermé
Signaler
Messages postés
10
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
28 mars 2008
-
 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.

2 réponses


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
Messages postés
10
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
28 mars 2008

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.

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;
}