C: supprimer un caractère dans un fichier

Fermé
Koma777 Messages postés 261 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 16 février 2018 - 11 nov. 2008 à 14:36
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 11 nov. 2008 à 18:20
Bonjour,
je suis entrain d'écrire un carnet d'adresse en langage c.
J'ai déjà codé l'ajout de contact, et l'affichage total du carnet.
Par contre je ne sais pas comment supprimer un contact.

Je cherches donc à savoir comment supprimer un caractère dans un fichier???
Merci d'avance

6 réponses

pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
11 nov. 2008 à 14:37
A part en chargeant le fichier dans un tampon, en modifiant ça en mémoire et en réenregistrant, je ne sais pas...
0
Koma777 Messages postés 261 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 16 février 2018 7
11 nov. 2008 à 14:47
je ne sais pas...
Par ce qu'il faut également demander à l'utilisateur quel contact il voudrais supprimer...

Donc ouvrir le fichier.
Demander quel contact supprimer.
Ce placer dnas le fichier au niveau du contact.
Ensuite supprimer la ligne où il ce trouve.
Mais ça je ne vois vraiment pas comment faire....
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
11 nov. 2008 à 14:56
De quelle forme est ton fichier ? Tu peux peut-être utiliser du XML et des outils spécialisés qui t'épargneraient le sale boulot...
0
Koma777 Messages postés 261 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 16 février 2018 7
11 nov. 2008 à 15:06
C'est un fichier txt.
Et je ne peux que utiliser ça...

Par exemple voici la base.txt avec nom prénom n°de téléphone et age:
toto titi 0123456789 22
tata toutou 0234456789 26

L'utilisateur demande à supprimer tata et tout le reste (nom tel et age).

Comment faire pour ce positionner dans le fichier en prenant en compte le nom du contact donné par l'utilisateur?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
11 nov. 2008 à 15:16
Salut,
Effectivement, tu n'as pas le choix que de tout charger, et de supprimer la ligne désirée étant donné que tu ne connais pas le numéro de la ligne qui permettrait de positionner le flux.
Cdlt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Koma777 Messages postés 261 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 16 février 2018 7
11 nov. 2008 à 15:37
ok, mais comment faire alors pour supprimer la ligne voulu?
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
11 nov. 2008 à 17:04
Tu charges le fichier en mémoire, tu le lis ligne par ligne, quand tu trouves la ligne que tu veux effacer, tu la supprimes, tu enregistres le fichier sur le disque...
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
11 nov. 2008 à 17:06
Mais si tu as vraiment beaucoup de contacts, faire une base de données ou au moins utiliser un format XML permettrait d'être plus efficace à mon avis...
0
Koma777 Messages postés 261 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 16 février 2018 7
11 nov. 2008 à 18:12
oui mais c'est un "mini-projet" qu'un de mes prof m'a donné à faire en C.
Merci pour tes réponses en tout cas.
Je verrais avec ce que tu m'as dit alors!

Bien que je ne vois pas quel fonction permet de:
"charger le fichier en mémoire, tu le lis ligne par ligne, quand tu trouves la ligne que tu veux effacer, tu la supprimes, tu enregistres le fichier sur le disque..."
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
11 nov. 2008 à 18:20
Bah, à toi de la faire lol.
Charger le fichier en mémoire, tu t'en sortiras facilement avec du fgets et un tableau dans une boucle while.
Après, tu recopies dans le fichier avec fprintf dans une boucle while, si la ligne ne contient pas le nom (et ça avec strtok, tu t'en sors facilement).
Cdlt
0