Supprimer un enregistrement en C
Fermé
dim12
-
9 juin 2010 à 10:03
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 9 juin 2010 à 14:45
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 9 juin 2010 à 14:45
A voir également:
- Supprimer un enregistrement en C
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Impossible de supprimer un fichier - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Comment supprimer un compte gmail - Guide
1 réponse
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 juin 2010 à 10:51
9 juin 2010 à 10:51
Salut.
C'est ça qui ne va pas :
fscanf(fichier, "%s\n", appartement[i].reference);
if (strcmp(appartement[i].reference, delname) != 0)
{
fprintf(OUTFILE, "%s\n", appartement[i].reference);
fprintf(OUTFILE, "%s\n", appartement[i].description);
fprintf(OUTFILE, "%d\n", appartement[i].codePostal);
Je ne suis pas sur de comprendre, mais pose toi ces questions et réponds y :
Qui as t'il dans appartement[i].reference après le scanf ? S'il n'y a que la référence, le if suivant est ok, mais comment est remplis appartement[i].description et autre variables ?
Si appartement[i].reference contient toute la ligne (avec appartement[i].description etc.) le if ne peut pas fonctionner.
Pourquoi ne renommes tu pas appartementV2 en appartementV1. La boucle de lecture de V1 infinie, c'est très mauvais, imagine que le fichier est supprimé, ton programme tombe dans une boucle inifinie. La gestion de l'erreur n'est pas bonne.
Autre remarque, ta manière de boucler est mauvaise : à chaque fin de fonction, tu appels menu() ou main(), c'est à dire que tu ne sort jamais de la fonction appelante et tu enchaines les appels de fonctions. Problèmes que cela cause :
1- je ne suis pas sur que tu puisses imbriquer un nombre infinie de fonction, au bout d'un moment ça plante (à vérifier)
2- ton programme va prendre de plus en plus de place, car les variables ne sont pas détruites (on ne sort jamais de la fonction) et de nouvelles sont crées.
Pourquoi te limiter à 100 appartement, mieu faudrait faire un pointeur avec une liste chainé.
Pas mal de choses à revoir.
C'est ça qui ne va pas :
fscanf(fichier, "%s\n", appartement[i].reference);
if (strcmp(appartement[i].reference, delname) != 0)
{
fprintf(OUTFILE, "%s\n", appartement[i].reference);
fprintf(OUTFILE, "%s\n", appartement[i].description);
fprintf(OUTFILE, "%d\n", appartement[i].codePostal);
Je ne suis pas sur de comprendre, mais pose toi ces questions et réponds y :
Qui as t'il dans appartement[i].reference après le scanf ? S'il n'y a que la référence, le if suivant est ok, mais comment est remplis appartement[i].description et autre variables ?
Si appartement[i].reference contient toute la ligne (avec appartement[i].description etc.) le if ne peut pas fonctionner.
Pourquoi ne renommes tu pas appartementV2 en appartementV1. La boucle de lecture de V1 infinie, c'est très mauvais, imagine que le fichier est supprimé, ton programme tombe dans une boucle inifinie. La gestion de l'erreur n'est pas bonne.
Autre remarque, ta manière de boucler est mauvaise : à chaque fin de fonction, tu appels menu() ou main(), c'est à dire que tu ne sort jamais de la fonction appelante et tu enchaines les appels de fonctions. Problèmes que cela cause :
1- je ne suis pas sur que tu puisses imbriquer un nombre infinie de fonction, au bout d'un moment ça plante (à vérifier)
2- ton programme va prendre de plus en plus de place, car les variables ne sont pas détruites (on ne sort jamais de la fonction) et de nouvelles sont crées.
Pourquoi te limiter à 100 appartement, mieu faudrait faire un pointeur avec une liste chainé.
Pas mal de choses à revoir.
9 juin 2010 à 11:22
Mais as tu une solution juste pour pouvoir supprimer dans le fichier?
Merci encore.
9 juin 2010 à 13:40
https://forums.commentcamarche.net/forum/affich-16245372-ecrire-dans-un-fichier-en-c-c
Ouvrir un fichier plus un nouveau, en recopier une partie, en sauter une autre et recopier le reste.
Bonne continuation.
9 juin 2010 à 14:45
Il y a deux façon de faire ce que tu veux faire.
1- tu lit la ligne entière. Tu isoles la référence pour la comparer. Tu copie la ligne entière dans le nouveau fichier.
2- tu récupère tout les champ indépendamment (c'est à dire scanf avec 6 arguments). Tu compare la référence, tu réécris tout tes champs.