[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
Utilisateur anonyme - 1 avril 2008 à 11:47
A voir également:
- [C] Tableau dans un fichier
- Tableau croisé dynamique - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Tableau ascii - Guide
2 réponses
Utilisateur anonyme
28 mars 2008 à 16:58
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
Exemple de lecture
Essaye de faire quelque chose avec cette exemple et poste à nouveau si tu as besoin d'aide
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
Utilisateur anonyme
1 avril 2008 à 11:47
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; }
28 mars 2008 à 18:28
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.