CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C : effacer mot dans .txt

Artatum
Artatum
Niveau 10
23 septembre 2005 à 20:20:46

salut,
qqun saurait comment un programme peut effacer un mot ds un fichier.txt ? je ne trouve pas, et la fonction recherche ne donne rien.

J´ai écrit un code qui me permet de rentrer des mots les uns à la suite des autres dans un .txt, de les afficher, d´en rechercher un, je voudrais bien pouvoir en effacer un.
ils sont écrits mot1\n mot2\n ....

dnob700
dnob700
Niveau 10
23 septembre 2005 à 21:09:16

Vu la manière dont c´est fait, à mon avis le plus simple est de charger le fichier et de le réécrire sans la ligne qui te gène.

Mais il y a peut-être mieux.

lag-it
lag-it
Niveau 10
23 septembre 2005 à 21:24:31

Je pense comme dnob : tu supprimes la chaine désirée en réécrivant les caractères qui lui succède par dessus.

[LoCkLeSs]
[LoCkLeSs]
Niveau 10
23 septembre 2005 à 23:06:32

Y´a pas moyen de bidouiller avec les listes chaînées là ? Pour la gestion des mots ça serait surement plus simple ?

lag-it
lag-it
Niveau 10
23 septembre 2005 à 23:10:46

Oui mais au final le résultat sera un peu équivalent, vu que tu seras obligé de lire le doc pour créer ta liste, puis modifier et réécrire ton document texte après :)

[LoCkLeSs]
[LoCkLeSs]
Niveau 10
23 septembre 2005 à 23:12:56

Say vrai, mais on peut remplacer le mot, par plusieurs caracteres nul ? ce qui effacerait ptete le mot ? Je pense à "\0" ?

lag-it
lag-it
Niveau 10
23 septembre 2005 à 23:18:25

Erk, nan :p)
Et même si ca marchait, imagine que tu supprimes 99 % des mots d´un fichier en contenant des milliers : ton fichier final pèserait une tonne pour rien alors qu´il ne contiendrait que très peu d´info :)

Artatum
Artatum
Niveau 10
24 septembre 2005 à 00:51:21

arghhh, quel perte de temps et de code et de temps !

alors sous quel format écrire cette base de mots ?

dnob700
dnob700
Niveau 10
24 septembre 2005 à 16:08:00

lag-it : sauf avec un système de fichier type ext2 ou 3 (je ne sais pas trop) qui gère les sparse files : les fichiers remplis de vide, sont enregistré en ne stockant que les info entre les trous et les position des trous. Bon, c´est peut-être pas automatique, je en sais pas je ne m´en suis jamais servi (bah, oui, j´utilise un système qui préfère largement le NTFS au ext3...) mais n´empêche, en théorie, c´est fait pour ça.

Artatum
Artatum
Niveau 10
24 septembre 2005 à 17:27:14

merci dnob, et est-ce que ce ne serait pas alors préférable en binaire ?

[LoCkLeSs]
[LoCkLeSs]
Niveau 10
24 septembre 2005 à 18:18:52

Sinon t´utilises une base de donée ! :-d

Artatum
Artatum
Niveau 10
24 septembre 2005 à 19:24:20

c´est à dire ? je n´y connais rien en bases de données.

Matbox2
Matbox2
Niveau 7
24 septembre 2005 à 20:26:03

A l´aide de la fonction strstr de la bibliothèque standard tu obtient un pointeur sur l´indice du tableau ou ton mot commence. Tu te déplace jusqu´à la in de ton mot caractère ´ ´.
Tu initialise un pointeur sur cette fin de mot, puis tu strcpy() ce pointeur dernièrement obetnu dans l´indice renvoyé par strstr() et je pense que ça devrait marcher.

Matbox2
Matbox2
Niveau 7
24 septembre 2005 à 20:27:03

Correction l cractère en fin de mot est \n et non ´ ´ désolé je n´avais pas bien lu mais la démarche reste la même

Artatum
Artatum
Niveau 10
24 septembre 2005 à 21:09:38

ok merci beaucoup , je vais essayer la fonction strstr

godrik
godrik
Niveau 30
26 septembre 2005 à 15:02:47

dnob: sauf \0 c´est un caractere!
La gestion de la fragmentation des systeme de fichiers est completement indépendante du probleme qui nous interesse

dnob700
dnob700
Niveau 10
26 septembre 2005 à 18:58:47

Je ne me souviens pas d´avoir parlé de fragmentation de systèmes de fichier...

Je parlais de "sparse file" : des fichiers qui contiennent beaucoup de zéro (\0 si tu veux) qui sont bien ds caractères, mais que l´on considera come vide.

Et bien, certain système de fichier - et pour le coup ça à tout à voir avec ce dont on parle ou en tout cas avec ce qu´à dit lag-it - certain système de fichier donc (d´ailleurs j´ai découvert que NTFS gérait ce truc aussi) permettent de ne stocket que les zones contenant des informations d´un fichier et de ne pas stocker les énormes "vide" entre les informations s´ils existent mais de seulement stocker la place de ces vides.

Nesca
Nesca
Niveau 5
27 septembre 2005 à 14:51:08

En gros, tu as un mot par ligne dans ton fichier, si je comprends bien la description de ta structure de données :-)

Je te dirais d´ouvrir un fichier de sortie, d´ouvrir ton fichier d´entrée, d´en lire chaque ligne dans un bon vieux buffer avec un fgetline() des familles, de la comparer d´un coup de strcmp() avec le mot recherché, et s´il est bien différent de l´ajouter au fichier de sortie.

Après, si tu tiens à travailler sur le même fichier en entrée et en sortie, tu n´auras qu´à passer par un fichier temporaire, ou une bonne liste chainée en mémoire.

fracart
fracart
Niveau 5
28 septembre 2005 à 08:45:28

t´es sur de bien vouloir le faire en c ?
parce qu´en php, ca prend 30 secondes :
tu prend tout ce kya dans le fichier dans un string et tu lui appliques un str_replace et tu remets tout dans le fichier...

Sinon l´idée de la liste chaînée est pas mal

godrik
godrik
Niveau 30
28 septembre 2005 à 12:54:36

et il faut déclarer un fichier en tant que sparse file ou le systeme de fichier est assez inteligent pour les trouver tout seul ?

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment