Modification de fichier

Fermé
titi.007 Messages postés 5 Date d'inscription dimanche 10 mars 2013 Statut Membre Dernière intervention 12 octobre 2014 - 7 mai 2013 à 20:59
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 mai 2013 à 23:06
bonjour, voila un programme qui permet de corriger la note d'un étudiant dans une matière donnée dans un fichier notes.txt. On suppose que chaque ligne de ce fichier contient les données suivantes:
carte étudiant : 5 caractères (entier)
code matière : 5 caractères (entier)
note :5 caractères(réel)
exp:123450021213.25 dont 12345 : carte étudiant; 00212: code matière et 13.25 : note
mais après l'exécution de programme il ne donne pas un résultat correct
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max_str 512

void actualise_note_etudiant(FILE *fp_notes, int code_matiere, int carte_etudiant, float note)
{
    char s[512], s1[512];
    int carte, code;
    float ancien_note;

    rewind(fp_notes);
    while(fgets(s,max_str,fp_notes)){
        sscanf(s,"%5d %5d %5f",&carte,&code,&ancien_note);
        if((carte==carte_etudiant)&&(code==code_matiere)){
            fseek(fp_notes, -15L, SEEK_CUR);
            sprintf(s1,"%5d %5d %5f",carte,code,note);
            fputs(s1,fp_notes);
        }
    }
}

int main()
{
    FILE *fp_notes;
    if(!(fp_notes=fopen("notes.txt","r+"))) {  printf("erreur d'ouverture\n");  exit(0); }
    actualise_note_etudiant(fp_notes,10111,11111,17);
    return 0;
}



A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
7 mai 2013 à 23:06
Il ne faut pas modifier un fichier comme ça en mode texte.
Si ce que tu récris n'a pas le même nombre de bits, cela provoquera des problèmes. En mode texte, il faut créer un autre fichier, recopier ligne par ligne et modifier la ligne en question avant de l'écrire.

Cdlt,
0