Probleme programme en c
yacinebosss
Messages postés
184
Statut
Membre
-
yacinebosss Messages postés 184 Statut Membre -
yacinebosss Messages postés 184 Statut Membre -
Bonjour, je sais mon code est merdique mais je ne sais pas comment faire la , je bloque:
ET IL Y'A AUSSI CETTE VERSION:
aidez moi plz, mon programme je crois qu'il est facile alors je pas la peine d'explication.
merci d'avance. :)
int main()
{
char MotSecret[]="BONJOUR";
int NombreDeLettre=0;
printf(" *********Le Jeu Du Pendule*******\n");
CompteNombreLettre(&MotSecret,&NombreDeLettre)
printf("%d",NombreDeLettre);
}
int CompteNombreLettre(char* MotSecret,int* NombreDeLettre)
{
int NombreDeLettre2=0;
FILE* fichier=NULL;
fichier=fopen("MotSecretf.txt","w");
fprintf(fichier,*MotSecret);
fclose(fichier);
fichier=fopen("MotSecretf","r");
while(fichier!=EOF)
{
fgetc("fichier");
NombreDeLettre2++;
}
fclose(fichier);
*NombreDeLettre=NombreDeLettre2;
}
ET IL Y'A AUSSI CETTE VERSION:
int main()
{
char MotSecret[]="BONJOUR";
int NombreDeLettre=0;
printf(" *********Le Jeu Du Pendule*******\n");
NombreDeLettre = ComteNombreLettre(MotSecret);
printf("%d",NombreDeLettre);
}
int ComteNombreLettre(char MotSecret)
{
char MotSecret2[100]={0};
int NombreDeLettre=0;
strcpy(MotSecret2,MotSecret)
FILE* fichier=NULL;
fichier=fopen("MotSecretf.txt","w");
fprintf(fichier,MotSecret2);
fclose(fichier);
fichier=fopen("MotSecretf","r");
while(fichier!=EOF)
{
fgetc("fichier");
NombreDeLettre++;
}
fclose(fichier);
return NombreDeLettre;
}
aidez moi plz, mon programme je crois qu'il est facile alors je pas la peine d'explication.
merci d'avance. :)
A voir également:
- Probleme programme en c
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
- Message programmé iphone - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
1 réponse
Bonjour,
Les explications sont toujours nécessaires. Cela nous permet de répondre plus rapidement. Et notamment, il faut a minima nous dire ce qui ne fonctionne pas ou à défaut qu'est-ce qui te fait penser que ça bloque.
Remarque générale : les noms de variables commencent conventionnellement par une minuscule. Donc plutôt motSecret que MotSecret.
CompteNombreLettre(&MotSecret,&NombreDeLettre)
Pas de & devant MotSecret.
fprintf(fichier,*MotSecret);
Attention à l'utilisation de fprintf(). Il faut mettre : fprintf(fichier, "%s", MotSecret); et non (MotSecret directement).
Note : NombreDeLettre2 est inutile. Tu pouvais directement incrémenter NombreDeLettre.
int CompteNombreLettre(char* MotSecret,int* NombreDeLettre)
Ta fonction est censée renvoyer un int. Pourtant tu n'as pas mis de return...
printf("%d",NombreDeLettre);
Il faut mettre un \n à la fin du printf pour forcer l'affichage avant la fin du programme.
int main()
Le bon prototype du main() sans argument est : int main(void)
De plus, il renvoie un int. Il faut donc mettre un return 0; à la fin du programme.
Les explications sont toujours nécessaires. Cela nous permet de répondre plus rapidement. Et notamment, il faut a minima nous dire ce qui ne fonctionne pas ou à défaut qu'est-ce qui te fait penser que ça bloque.
Remarque générale : les noms de variables commencent conventionnellement par une minuscule. Donc plutôt motSecret que MotSecret.
CompteNombreLettre(&MotSecret,&NombreDeLettre)
Pas de & devant MotSecret.
fprintf(fichier,*MotSecret);
- MotSecret ne désigne qu'un char. Si tu souhaites écrire la chaîne entier, il faut mettre : MotSecret (sans l'étoile).
Attention à l'utilisation de fprintf(). Il faut mettre : fprintf(fichier, "%s", MotSecret); et non (MotSecret directement).
Note : NombreDeLettre2 est inutile. Tu pouvais directement incrémenter NombreDeLettre.
int CompteNombreLettre(char* MotSecret,int* NombreDeLettre)
Ta fonction est censée renvoyer un int. Pourtant tu n'as pas mis de return...
printf("%d",NombreDeLettre);
Il faut mettre un \n à la fin du printf pour forcer l'affichage avant la fin du programme.
int main()
Le bon prototype du main() sans argument est : int main(void)
De plus, il renvoie un int. Il faut donc mettre un return 0; à la fin du programme.
L’EXPLICATION DU PROGRAMME :
mon programme en faite est un exercice, j'essaye de réalisé le jeu du pendule (je suis au début du début).
dans la fonction main je crée une chaine de caractère et une variable Nombre.. et j'envois leur adresse a la fonction Compte.. pour modifier la variable est copier la chaîne dans un ficheir pour pouvoir travaillé dessus (je sais qu'il y'a sans doute d'autre facon de faire ca mais je tien a la mien ^^ ) apres je compte le nombre de lettre de la chaine pour faire :
while(i<Nombre..) { printf("*"); i++; }c'est tout :)
j'ai corrigé les erreurs que vous m'avez fait remarqué.mais ca me dit qu'il y'a une erreur
quand j'envois les adresse CompteNombre...(..,&..).
et voici le programme apres modification:
int main(void) { char MotSecret[]="BONJOUR"; int NombreDeLettre=0; printf(" *********Le Jeu Du Pendule*******\n"); CompteNombreLettre(MotSecret,&NombreDeLettre) printf("%d\n",NombreDeLettre); return 0; } int CompteNombreLettre(char* MotSecret,int* NombreDeLettre) { FILE* fichier=NULL; fichier=fopen("MotSecretf.txt","w"); fprintf(fichier,"s",MotSecret); fclose(fichier); fichier=fopen("MotSecretf","r"); while(fichier!=EOF) { fgetc("fichier"); *NombreDeLettre++; } fclose(fichier); return 0; }QUESTION:
_dans le cour que je suis on nous dit d’écrire les nom des variable en commencent par une majuscule. (c'est pas vraiment une question en faite :) )
_pourquoi quad je fait &MotSecret c'est faut (j'ai pas fait ca dans le cour). en n'a utilisé les pointeur juste des variable.
merci :)
Remarque supplémentaire : fichier=fopen("MotSecretf","r");
C'est normal d'utiliser un autre fichier ? Le 1er contient .txt, pas le second.
fgetc("fichier");
C'est fichier et pas "fichier".
_pourquoi quad je fait &MotSecret c'est faut (j'ai pas fait ca dans le cour). en n'a utilisé les pointeur juste des variable.
Lorsque tu utilises le tableau MotSecret en paramètre de fonction, il est converti en adresse de pointeur sur le 1er élément du tableau. Autrement dit, MotSecret dans ce contexte est un char*. Il ne faut donc pas mettre d'esperluette devant.
et quand j'ai écrit le même programme en utilisant juste les variable c'est faux ?
Pas compris ta question.
voici le programme:
int main() { char MotSecret[]="BONJOUR"; int NombreDeLettre=0; int i=0; printf(" *********Le Jeu Du Pendule*******\n\n\n"); printf("BONJOUR\n"); NombreDeLettre = ComteNombreLettre(MotSecret); while(i+1<NombreDeLettre) { printf("*"); i++; } } int ComteNombreLettre(char MotSecret[]) { int NombreDeLettre=0; int PositionDuCurseur=0; FILE* fichier=NULL; fichier=fopen("MotSecretf.txt","w"); fprintf(fichier,"%s",MotSecret); fclose(fichier); fichier=fopen("MotSecretf.txt","r"); do { PositionDuCurseur=fgetc(fichier); NombreDeLettre++; }while(PositionDuCurseur!=EOF); fclose(fichier); return NombreDeLettre; }JE SUIS TELLEMENT CONTENT DE MOI :) .
int main()
C'est int main(void).
Il manque le return 0.
fichier=fopen("MotSecretf","r");
Je remets ma question : est-ce normal que ce soit MotSecretf sans .txt ? (Comme fait lors du 1er fopen())
fgetc("fichier");
C'est fichier et non "fichier".
Note : pourquoi utiliser la variable MotSecret2 ? Inutile.