[C] Tableau dans un fichier

Fermé
achrafcabiste Messages postés 10 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 28 mars 2008 - 28 mars 2008 à 16:50
 Utilisateur anonyme - 1 avril 2008 à 11:47
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.
A voir également:

2 réponses

Utilisateur anonyme
28 mars 2008 à 16:58
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
achrafcabiste Messages postés 10 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 28 mars 2008
28 mars 2008 à 18:28
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
Utilisateur anonyme
1 avril 2008 à 11:47
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