pb programme de conjugaison et fgets
Dernière réponse : dans Programmation
Bonjour! j'essaye actuellement de faire un programme qui fasse les conjugaison de verbes.
Cependant je rencontre des erreurs. J'ai changé la fonction gets par fgets pour récupérer la valeur saisie mais je n'arrive pas à tester le retour. j'ai comme message d'erreur "undefined reference to flush". Si vous avez une idée merci!
Cependant je rencontre des erreurs. J'ai changé la fonction gets par fgets pour récupérer la valeur saisie mais je n'arrive pas à tester le retour. j'ai comme message d'erreur "undefined reference to flush". Si vous avez une idée merci!
int viregulier(char *input)
{
FILE *fptr;
int i=0;
char buffer;
char *extension=".txt";
char nomfichier[100];
for(i=0;i<sizeof(irregulier)/sizeof(char*);i++)
{
if(strcmp(input,*(irregulier+i))==0)
{
strcpy(nomfichier,input);
strcat(nomfichier,extension);
printf("%s",nomfichier);
if((fptr = fopen(nomfichier, "rt")) == NULL)
{
printf("Désolé nous n'avons pas ce verbe");
return 1;
}
while((buffer = fgetc(fptr))!=EOF)
putchar(buffer);
fclose(fptr);
return 1;
}
}
return 0;
};
main()
{
char *er = "er";
char *re = "re";
char *ir = "ir";
char input[200];
char output[200];
const char **ptrconjugaison;
char *ptr;
char again = 0;
int i=0,j=0;
while(again!='n' && again!='N')
{
printf("\nChoisissez un verbe à conjuguer : ");
if (fgets(input,sizeof input,stdin) != NULL)
{
if(!viregulier(input))
{
ptr = &input[strlen(input)-2];
if(strcmp(ptr,er)==0)
ptrconjugaison = prem_conjugaison;
else if(strcmp(ptr,re)==0)
ptrconjugaison = deux_conjugaison;
else if(strcmp(ptr,ir)==0)
ptrconjugaison = trois_conjugaison;
else
{
printf("Verbe incorrect");
printf("\nChoisissez un autre verbe (N pour quitter) :");
again = getchar();
}
printf("\nInfinitif %s\n\n",ptr);
input[strlen(input)-2]='\0';
strcpy(output,input);
printf("\nPresent :\n");
for(j=0;j<6;j++)
printf("%10s %s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nSubjonctif :\n");
for(j=0;j<6;j++)
printf("%10s %s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nFutur :\n");
for(j=0;j<6;j++)
printf("%10s %s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nConditionel :\n");
for(j=0;j<6;j++)
printf("%10s %s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nImparfait :\n");
for(j=0;j<6;j++)
printf("%10s %s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nPasse :\n");
for(j=0;j<6;j++)
printf("%10s %s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nImparfait du Subjonctif :\n");
for(j=0;j<6;j++)
printf("%10s %s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nParticipe Present :\n");
for(j=0;j<4;j++)
printf("%10s%s\n",input,*(ptrconjugaison++));
printf("\nParticipe Passe :\n");
for(j=0;j<4;j++)
printf("%10s%s\n",input,*(ptrconjugaison++));
}
// =======================================
printf("\n\nSaisissez un verbe (N pour quitter) :");
again = getchar();
fflush(stdin);
}
}
printf("\nAu revoir!!\n\n");
}
Autres pages sur : programme conjugaison fgets
Lassé par la pub ? Créez un compte
Citation :
->
if (fgets(input,sizeof input,stdin) != NULL)
if (fgets(input,sizeof(input)-1,stdin) != NULL)
(Le -1 c'est pour le \0
)Inutile, fgets() en tient déjà compte.
http://www-ccs.ucsd.edu/c/stdio.html#fgets
amin01 a dit :
Bonjour! j'essaye actuellement de faire un programme qui fasse les conjugaison de verbes.Cependant je rencontre des erreurs. J'ai changé la fonction gets par fgets pour récupérer la valeur saisie mais je n'arrive pas à tester le retour. j'ai comme message d'erreur "undefined reference to flush". Si vous avez une idée merci!
Merci de poster du code un peu plus compilable que ça...
Project : Forums
Compiler : GNU GCC Compiler (called directly)
Directory : D:\dev\ed02\cb\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
main.c:2: warning: no previous prototype for 'viregulier'
main.c: In function `viregulier':
main.c:3: error: `FILE' undeclared (first use in this function)
main.c:3: error: (Each undeclared identifier is reported only once
main.c:3: error: for each function it appears in.)
main.c:3: error: `fptr' undeclared (first use in this function)
main.c:6: warning: initialization discards qualifiers from pointer target type
main.c:9: error: `irregulier' undeclared (first use in this function)
main.c:11: error: implicit declaration of function `strcmp'
main.c:11: warning: nested extern declaration of `strcmp'
<internal>:0: warning: redundant redeclaration of 'strcmp'
main.c:13: error: implicit declaration of function `strcpy'
main.c:13: warning: nested extern declaration of `strcpy'
<internal>:0: warning: redundant redeclaration of 'strcpy'
main.c:14: error: implicit declaration of function `strcat'
main.c:14: warning: nested extern declaration of `strcat'
<internal>:0: warning: redundant redeclaration of 'strcat'
main.c:15: error: implicit declaration of function `printf'
main.c:15: warning: nested extern declaration of `printf'
<internal>:0: warning: redundant redeclaration of 'printf'
main.c:16: error: implicit declaration of function `fopen'
main.c:16: warning: nested extern declaration of `fopen'
main.c:16: error: `NULL' undeclared (first use in this function)
main.c:21: error: implicit declaration of function `fgetc'
main.c:21: warning: nested extern declaration of `fgetc'
main.c:21: error: `EOF' undeclared (first use in this function)
main.c:22: error: implicit declaration of function `putchar'
main.c:22: warning: nested extern declaration of `putchar'
<internal>:0: warning: redundant redeclaration of 'putchar'
main.c:23: error: implicit declaration of function `fclose'
main.c:23: warning: nested extern declaration of `fclose'
main.c: At top level:
main.c:31: warning: return type defaults to `int'
main.c: In function `main_':
main.c:33: warning: initialization discards qualifiers from pointer target type
main.c:34: warning: initialization discards qualifiers from pointer target type
main.c:35: warning: initialization discards qualifiers from pointer target type
main.c:47: warning: nested extern declaration of `printf'
<internal>:0: warning: redundant redeclaration of 'printf'
main.c:49: error: implicit declaration of function `fgets'
main.c:49: warning: nested extern declaration of `fgets'
main.c:49: error: `stdin' undeclared (first use in this function)
main.c:49: error: `NULL' undeclared (first use in this function)
main.c:53: error: implicit declaration of function `strlen'
main.c:53: warning: nested extern declaration of `strlen'
<internal>:0: warning: redundant redeclaration of 'strlen'
main.c:55: warning: nested extern declaration of `strcmp'
<internal>:0: warning: redundant redeclaration of 'strcmp'
main.c:56: error: `prem_conjugaison' undeclared (first use in this function)
main.c:58: error: `deux_conjugaison' undeclared (first use in this function)
main.c:60: error: `trois_conjugaison' undeclared (first use in this function)
main.c:65: error: implicit declaration of function `getchar'
main.c:65: warning: nested extern declaration of `getchar'
main.c:72: warning: nested extern declaration of `strcpy'
<internal>:0: warning: redundant redeclaration of 'strcpy'
main.c:75: error: `pronoms' undeclared (first use in this function)
main.c:75: warning: too many arguments for format
main.c:78: warning: too many arguments for format
main.c:81: warning: too many arguments for format
main.c:84: warning: too many arguments for format
main.c:87: warning: too many arguments for format
main.c:90: warning: too many arguments for format
main.c:93: warning: too many arguments for format
main.c:103: warning: nested extern declaration of `getchar'
main.c:65: warning: redundant redeclaration of 'getchar'
main.c:65: warning: previous implicit declaration of 'getchar' was here
main.c:104: error: implicit declaration of function `fflush'
main.c:104: warning: nested extern declaration of `fflush'
main.c:107: warning: nested extern declaration of `printf'
<internal>:0: warning: redundant redeclaration of 'printf'
main.c:43: warning: unused variable `i'
main.c:108:2: warning: no newline at end of file
Process terminated with status 1 (0 minutes, 1 seconds)
25 errors, 44 warnings
bonjour Emmanuel , désolé pour la compilation mais effectivement je me suis trompé de programme à force de faire des version bêta.
bon je sais c'est pas génial mais j'utilise finalement un scanf qui à mon niveau est plus facile car je ne sais pas comment tester le retour. j'ai regarder sur ton site et après plusieurs tentatives je n'ai pas réussi.
Voici ce que j'ai fait, cela fonctionne, il faut maintenant que je le complexifie pour le j et le j' par exemple.
le probleme que je vais rencontrer également c'est que pour chaque verbe "irregulier" je vais devoir faire un fichier texte.
bon je sais c'est pas génial mais j'utilise finalement un scanf qui à mon niveau est plus facile car je ne sais pas comment tester le retour. j'ai regarder sur ton site et après plusieurs tentatives je n'ai pas réussi.
Voici ce que j'ai fait, cela fonctionne, il faut maintenant que je le complexifie pour le j et le j' par exemple.
le probleme que je vais rencontrer également c'est que pour chaque verbe "irregulier" je vais devoir faire un fichier texte.
#include<stdio.h>
#include<string.h>
const char *irregulier[]={"faire","pouvoir","avoir","etre","prendre","devoir","permettre",
"mettre","aller","voir","dire","savoir","joindre","venir",
"vouloir","attendre","envoyer","transmettre","partir","courir","finir",
"aimer","tenir","appeler","asseoir","taire","manger","choisir",
"connaitre","comprendre","sortir","sentir","croire","recevoir","plaire",
"ecrire","mourir","essayer","boire","jouer","rendre","lire",
"passer","repondre","jeter","reussir","suivre","donner","convenir","etablir"};
const char *prem_conjugaison[]={ "e","es","e","ons","ez","ent",
"e","es","e","ions","iez","ent",
"erai","eras","era","erons","erez","eront",
"erais","erais","erait","erions","eriez","eraient",
"ais","ais","ait","ions","iez","aient",
"ai","as","a","ames","ates","arent",
"asse","asses","at","assions","assiez","assent",
"ant","ante","ants","antes",
"e","e","e","e"};
const char *deux_conjugaison[]={"s","s"," ","ons","ez","ent",
"e","es","e","ions","iez","ent",
"rai","ras","ra","rons","rez","ront",
"rais","rais","rait","rions","riez","raient",
"ais","ais","ait","ions","iez","aient",
"is","is","it","imes","ites","irent",
"isse","isses","it","issions","issiez","issent",
"ant","ant","ant","ant",
"u","u","u","u"};
const char *trois_conjugaison[]={"is","is","it","issons","issez","issent",
"isse","isses","isse","issions","issiez","issent",
"irai","iras","ira","irons","irez","iront",
"irais","irais","irait","irions","iriez","iraient",
"issais","issais","issait","issions","issiez","issaient",
"is","is","it","imes","ites","irent",
"isse","isses","it","issions","issiez","issent",
"issant","issant","issant","issant",
"i","i","i","i"};
char * pronoms[6]={"je","tu","il/elle","nous","vous","ils/elles"};
int viregulier(char *input)
{
FILE *fptr;
int i=0;
char buffer;
char *extension=".txt";
char nomfichier[100];
for(i=0;i<sizeof(irregulier)/sizeof(char*);i++)
{
if(strcmp(input,*(irregulier+i))==0)
{
strcpy(nomfichier,input);
strcat(nomfichier,extension);
printf("%s",nomfichier);
if((fptr = fopen(nomfichier, "rt")) == NULL)
{
printf("Désolé nous n'avons pas ce verbe");
return 1;
}
while((buffer = fgetc(fptr))!=EOF)
putchar(buffer);
fclose(fptr);
return 1;
}
}
return 0;
};
main()
{
char *er = "er";
char *re = "re";
char *ir = "ir";
char input[200];
char output[200];
const char **ptrconjugaison;
char *ptr;
char again = 0;
int i=0,j=0;
while(again!='n' && again!='N')
{
printf("\nChoisissez un verbe a conjuguer : ");
scanf("%s",input);
if(!viregulier(input))
{
ptr = &input[strlen(input)-2];
if(strcmp(ptr,er)==0)
ptrconjugaison = prem_conjugaison;
else if(strcmp(ptr,re)==0)
ptrconjugaison = deux_conjugaison;
else if(strcmp(ptr,ir)==0)
ptrconjugaison = trois_conjugaison;
printf("\nInfinitif %s\n\n",ptr);
input[strlen(input)-2]='\0';
strcpy(output,input);
printf("\nPresent :\n");
for(j=0;j<6;j++)
printf("%10s %s%s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nSubjonctif :\n");
for(j=0;j<6;j++)
printf("%10s %s%s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nFutur :\n");
for(j=0;j<6;j++)
printf("%10s %s%s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nConditionel :\n");
for(j=0;j<6;j++)
printf("%10s %s%s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nImparfait :\n");
for(j=0;j<6;j++)
printf("%10s %s%s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nPasse :\n");
for(j=0;j<6;j++)
printf("%10s %s%s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nImparfait du Subjonctif :\n");
for(j=0;j<6;j++)
printf("%10s %s%s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nParticipe Present :\n");
for(j=0;j<4;j++)
printf("%10s %s%s\n",pronoms[j],input,*(ptrconjugaison++));
printf("\nParticipe Passe :\n");
for(j=0;j<4;j++)
printf("%10s %s%s\n",pronoms[j],input,*(ptrconjugaison++));
}
// =======================================
}
printf("\nAu revoir!!\n\n");
}
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumPb pour creer un sous programme
- ForumPb dexecution de programme
- ForumPb d'autorisation execution programme vista
- ForumPb de sons coupes avec le lancement de programme
- ForumPetit pb de script bash pour lancer un programme au demarage
- ForumPb compilation programme glut opengl sous debian
- ForumPb de registre sous xp aucun programme ne se lance
- ForumFlash programme
- ForumAu fait au sujet du pb doptimisation dun programme de gravure de cd
- ForumRecherche d un programme
- Voir plus