[C] Changer un mot
Fermé
scolphi
Messages postés
36
Date d'inscription
mercredi 25 avril 2007
Statut
Membre
Dernière intervention
18 mai 2008
-
18 mai 2008 à 18:34
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 19 mai 2008 à 00:41
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 19 mai 2008 à 00:41
A voir également:
- [C] Changer un mot
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Dans le texte, un seul mot a réellement été écrit en lettres capitales (majuscules). quel est ce mot ? ✓ - Forum Word
- Piratage facebook changer mot de passe - Guide
- My.canalbox.africa changer mot de passe ✓ - Forum Réception vidéo
- Mot de passe administrateur freebox ✓ - Forum Freebox
1 réponse
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
19 mai 2008 à 00:41
19 mai 2008 à 00:41
Pour commencer le main doit retourner un int (0 si tout va bien, un code d'erreur sinon).
Si un mot fait plus de 20 caractères le programme plantera.
Ensuite remplace "system("pause"); " par "getchar()"
Inclue le <strings.h> (pour la fonction strcasecmp).
Pour la démarche j'émets des doutes sur le fait de modifier un fichier en cours de lecture (notamment si le mot de remplacement est plus court que le mot de départ). Je pense que tu ferais mieux d'écrire dans un autre fichier car sinon ton FILE * risque de ne plus pointer où il faut.
Personnellement voici comment je coderais ton programme (en pseudo code pour que tu puisses t'entraîner)
Si le but c'est de remplacer des occurrences dans un fichier texte il est plus adéquat d'utiliser un outil comme sed que d'écrire un programme C (mais je suppose que c'est un exercice).
Bonne chance
Si un mot fait plus de 20 caractères le programme plantera.
Ensuite remplace "system("pause"); " par "getchar()"
Inclue le <strings.h> (pour la fonction strcasecmp).
Pour la démarche j'émets des doutes sur le fait de modifier un fichier en cours de lecture (notamment si le mot de remplacement est plus court que le mot de départ). Je pense que tu ferais mieux d'écrire dans un autre fichier car sinon ton FILE * risque de ne plus pointer où il faut.
Personnellement voici comment je coderais ton programme (en pseudo code pour que tu puisses t'entraîner)
1) ouvrir le fichier en lecture (fin) et ouvrir le fichier résultat en écriture (fout). Si l'un des fichiers ne peut être ouvert, quitter en renvoyant un message d'erreur. 2) lire fin ligne par ligne (avec getline) 2a) stocker la ligne dans un tampon (variable buffer). 2b) initialiser i = 0, n = strlen(buffer) 2c) Tant que i < n 2c1) Chercher le mot à remplacer strcasestr à partir de la position i, et stocker cette position dans j 2c2) si mot trouvé 2c2a) écrire ce qui est entre buffer[i] et buffer[j] dans fout 2c2b) écrire dans fout le mot de remplacement 2c2c) i = j+1 2c3) sinon, écrire ce qui est entre i et n 2d) Fin tant que 3) Fin pour 4) Fermer les fichiers, quitter
Si le but c'est de remplacer des occurrences dans un fichier texte il est plus adéquat d'utiliser un outil comme sed que d'écrire un programme C (mais je suppose que c'est un exercice).
Bonne chance