- chercher, dans le fichier entrée, un mot donné et le remplacer par un autre mot donné
- imprimer le résultat dans le fichier de sortie
Lorsque je compile, tout se passe bien sauf que le fichier sortie reste vide.
Qui peut voir mon code et me dire ce qui ne va pas? (Le code est en C)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LENGTH 1000
int main(int argc, char *argv[]) {
// Vérifier les arguments de la ligne de commande
if (argc != 4) {
printf("Usage: remplace motA par motB du fichier_entree vers fichier_sortie\n");
return 1;
}
// Ouvrir le fichier d'entrée en mode lecture
FILE *fichier_entree = fopen(argv[1], "r");
if (fichier_entree == NULL) {
printf("Erreur: Impossible d'ouvrir le fichier %s\n", argv[1]);
return 1;
}
// Ouvrir le fichier de sortie en mode écriture
FILE *fichier_sortie = fopen(argv[2], "w");
if (fichier_sortie == NULL) {
printf("Erreur: Impossible de créer le fichier %s\n", argv[2]);
fclose(fichier_entree);
return 1;
}
// Lire chaque mot du fichier d'entrée et remplacer les occurrences de motA par motB
char ligne[MAX_LENGTH];
while (fgets(ligne, MAX_LENGTH, fichier_entree)) {
char *mot = strtok(ligne, " \t\n"); // découper la ligne en mots
while (mot != NULL) {
if (strcmp(mot, argv[1]) == 0) {
fputs(argv[2], fichier_sortie); // écrire le mot de remplacement dans le fichier de sortie
} else {
fputs(mot, fichier_sortie); // écrire le mot original dans le fichier de sortie
}
fputc(' ', fichier_sortie); // écrire un espace après chaque mot
mot = strtok(NULL, " \t\n"); // passer au mot suivant
}
fputc('\n', fichier_sortie); // écrire un retour à la ligne à la fin de chaque ligne
}
// Fermer les fichiers
fclose(fichier_entree);
fclose(fichier_sortie);
printf("Le fichier a été traité avec succès.\n");
return 0;
}
Merci d'avance
EDIT : J'ai viré le bout de code qui vérifie les arguments de la ligne de commande et ça marche.
Il faut garder la vérification, mais mettre 5 ligne 10, au lieu de 4 (message ci-dessus)
Aussi : quand le programme s'exécute, lire les messages qu'il produit...
- Edité par michelbillaud 5 mars 2023 à 8:38:14
Problème d'arguments
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent