Programme en C
kirua-93
Messages postés
599
Date d'inscription
Statut
Membre
Dernière intervention
-
kirua-93 Messages postés 599 Date d'inscription Statut Membre Dernière intervention -
kirua-93 Messages postés 599 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila j'ai fait se code mais je ne comprend pas pourquoi cela ne marche que une seule fois. La seconde fois il se trompe
PS il faut avoir un fichier dico.txt a coter pour pouvoir comparer les mots qu'ils contient
Merci
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void menux(){
printf ("\t*********************************\n");
printf ("\t* Bienvenue sur l'anagrammeur *\n");
printf ("\t*********************************\n");
printf ("\n");
}
int main(int argc, char *argv[])
{
FILE* fichier = NULL;
fichier = fopen("dico.txt", "r");
char chaine[100];
char motsfichier[100] = "";
char motEntre[100];
char motsutilisateur[100];
int a =0;
int longueurChaine = 0;
int compteur = 0;
int choixMenu = 0;
menux();
while(compteur == 0){
printf ("--------------------------------------------------\n");
printf ("| (1) Nombre de lettre |Taper 1|\n");
printf ("--------------------------------------------------\n");
printf ("| (2) Verifier le mot |Taper 2|\n");
printf ("--------------------------------------------------\n");
printf ("| (3) Anagramme du mot |Taper 3|\n");
printf ("--------------------------------------------------\n");
printf ("| (0) Quitter le programme |Taper 0|\n");
printf ("--------------------------------------------------\n");
printf ("\n");
printf ("Que voulais vous faire ? ");
scanf ("%d", &choixMenu);
printf ("\n");
if(choixMenu == 0)
{
return 0;
}
if(choixMenu == 1)
{
printf ("Veuillez saisir un mot\n");
scanf ("%s", motEntre);
printf ("\n");
longueurChaine = strlen (motEntre);
printf ("La mot %s fait %d caracteres de long\n", motEntre, longueurChaine);
printf ("\n");
printf ("\n");
printf ("\n");
}
if(choixMenu == 2)
{
printf ("Veuillez saisir un mot\n");
printf("Entre un mots: ");
fscanf(stdin,"%s", motsutilisateur);
if (fichier != NULL)
{
while (fscanf(fichier, "%s", motsfichier) != NULL) //lit la chaine
{
if (strcmp(motsutilisateur, motsfichier) == 0) // Si strcmp renvoie 0 (chaînes identiques)
{
printf("Ce mots est bien francais ^^\n");
printf ("\n");
printf ("\n");
break;
}
else
{
a++;
if(a > 400000)
{
printf("Ce mot n'est pas francais\n");
printf ("\n");
printf ("\n");
break;
}
}
}
}
}
if(choixMenu == 3)
{
printf ("En cour de creation \n");
printf ("\n");
printf ("\n");
}
}
}
Voila j'ai fait se code mais je ne comprend pas pourquoi cela ne marche que une seule fois. La seconde fois il se trompe
PS il faut avoir un fichier dico.txt a coter pour pouvoir comparer les mots qu'ils contient
Merci
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void menux(){
printf ("\t*********************************\n");
printf ("\t* Bienvenue sur l'anagrammeur *\n");
printf ("\t*********************************\n");
printf ("\n");
}
int main(int argc, char *argv[])
{
FILE* fichier = NULL;
fichier = fopen("dico.txt", "r");
char chaine[100];
char motsfichier[100] = "";
char motEntre[100];
char motsutilisateur[100];
int a =0;
int longueurChaine = 0;
int compteur = 0;
int choixMenu = 0;
menux();
while(compteur == 0){
printf ("--------------------------------------------------\n");
printf ("| (1) Nombre de lettre |Taper 1|\n");
printf ("--------------------------------------------------\n");
printf ("| (2) Verifier le mot |Taper 2|\n");
printf ("--------------------------------------------------\n");
printf ("| (3) Anagramme du mot |Taper 3|\n");
printf ("--------------------------------------------------\n");
printf ("| (0) Quitter le programme |Taper 0|\n");
printf ("--------------------------------------------------\n");
printf ("\n");
printf ("Que voulais vous faire ? ");
scanf ("%d", &choixMenu);
printf ("\n");
if(choixMenu == 0)
{
return 0;
}
if(choixMenu == 1)
{
printf ("Veuillez saisir un mot\n");
scanf ("%s", motEntre);
printf ("\n");
longueurChaine = strlen (motEntre);
printf ("La mot %s fait %d caracteres de long\n", motEntre, longueurChaine);
printf ("\n");
printf ("\n");
printf ("\n");
}
if(choixMenu == 2)
{
printf ("Veuillez saisir un mot\n");
printf("Entre un mots: ");
fscanf(stdin,"%s", motsutilisateur);
if (fichier != NULL)
{
while (fscanf(fichier, "%s", motsfichier) != NULL) //lit la chaine
{
if (strcmp(motsutilisateur, motsfichier) == 0) // Si strcmp renvoie 0 (chaînes identiques)
{
printf("Ce mots est bien francais ^^\n");
printf ("\n");
printf ("\n");
break;
}
else
{
a++;
if(a > 400000)
{
printf("Ce mot n'est pas francais\n");
printf ("\n");
printf ("\n");
break;
}
}
}
}
}
if(choixMenu == 3)
{
printf ("En cour de creation \n");
printf ("\n");
printf ("\n");
}
}
}
A voir également:
- Programme en C
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
3 réponses
Il te manquait seulement une instruction ;-)
Après quelques modifications et quelques simplifications, le code pourrait ressembler à ceci:
Après quelques modifications et quelques simplifications, le code pourrait ressembler à ceci:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char* argv[]) { FILE* fichier = NULL; fichier = fopen("dico.txt", "r"); char motFichier[100] = ""; char motEntre[100]; int choixMenu = 0; char* chnTrouve = "Ce mot est bien français ^^"; char* chnPasTrouve = "Ce mot n'est pas français"; char* chn; printf ("\n\t*********************************\n"); printf ("\t* Bienvenue sur l'anagrammeur *\n"); printf ("\t*********************************"); while (1) { printf ("\n\n--------------------------------------------------\n"); printf ("| (1) Nombre de lettres |Taper 1|\n"); printf ("| (2) Vérifier le mot |Taper 2|\n"); printf ("| (3) Anagramme du mot |Taper 3|\n"); printf ("| (0) Quitter le programme |Taper 0|\n"); printf ("--------------------------------------------------\n"); printf ("Que voulez vous faire ? "); scanf ("%d", &choixMenu); printf ("\n"); switch (choixMenu) { case 0: return 0; case 1: printf ("Veuillez saisir un mot\n"); scanf ("%s", motEntre); printf ("\n"); printf ("Le mot %s contient %d caractères",motEntre,strlen (motEntre)); break; case 2: printf ("Veuillez saisir un mot\n"); printf("Entrez un mot: "); fscanf(stdin,"%s", motEntre); if (fichier) { chn = chnPasTrouve; rewind(fichier); while (fgets(motFichier, 100, fichier)) //lit une chaine { sscanf(motFichier, "%s", motFichier); if (!strcmp(motEntre, motFichier)) { chn = chnTrouve; break; } } printf("%s", chn); } break; case 3: printf ("En cours de création"); break; } } return EXIT_SUCCESS; }Bonne continuation.