problème en C - C - Programmation
Marsh Posté le 18-06-2006 à 12:43:46
essai d'enlever l'attribut const à MAX et MIN
Autre chose :
Code :
|
il faut lire :
Code :
|
C'est quoi ce while :
Code :
|
Ici tu ne teste pas l'égalité, mais tu réalise une affectation.
Je pense que tu voulais :
Code :
|
Marsh Posté le 18-06-2006 à 19:28:19
Un compilo bien réglé signale ce genre d'erreurs :
while (nombreEntree = nombreMystere);
Marsh Posté le 19-06-2006 à 11:43:13
ReplyMarsh Posté le 21-06-2006 à 14:21:41
ReplyMarsh Posté le 21-06-2006 à 14:23:40
Parce qu'entre les mains d'un débutant, scanf() est une fonction quiosdfskldjkpquaééà089 ?RPZ?
Segmentation fault (core dumped)
Marsh Posté le 21-06-2006 à 14:37:19
Elmoricq a écrit : Parce qu'entre les mains d'un débutant, scanf() est une fonction quiosdfskldjkpquaééà089 ?RPZ? |
Marsh Posté le 21-06-2006 à 15:20:14
big_dadi_fat a écrit : pourquoi ? |
Parce que "scanf" attend une entrée "formattée" et qu'il s'arrête à tout ce qui ne correspond pas au format, ce qui peut poser des pb
Exemple: tu veux faire saisir un nombre puis un texte
|
Il y a de grandes chances que tu n'arrives jamais à saisir ton texte. Pourquoi ? Parce que, quand tu tapes ton nombre, tu finis ta saisie par "return" (normal). Mais "scanf" extrait les chiffres du clavier et laisse le "return" qui n'est pas un chiffre. Et lors du "scanf" suivant, ben il lit le "return" qui est resté dans le clavier comme un gland. Tu peux évidemment mettre un "getchar()" juste après la saisie du nombre pour purger ce "return" mais si tu fais un programme pour d'autres personnes, avec "scanf" tu ne peux pas contrôler ce que les autres vont taper. Si l'utilisateur est neuneu, il peut taper "12xqsd" pour le nombre et là, t'es bien avancé.
Et il peut aussi entrer plus de 10 caractères dans la saisie du texte ce qui risque de te provoquer beaucoup de pb.
Avec "fgets" 1) tout ce qui entre est du texte que tu peux ensuite controler à ta façon et 2) il limite la saisie selon tes choix ce qui t'évite beaucoup de soucis
|
C'est pas beaucoup de travail en plus...
Marsh Posté le 21-06-2006 à 15:23:13
même
do {
printf("Entrez un nombre :" );
fgets(buf, 1024, stdin);
} while( sscanf(buf, "%d", &i) != 1 );
c'est pas mal non plus.
Marsh Posté le 30-06-2006 à 10:19:24
yobo1 a écrit : |
juste au passage, tu l'as testé ton prog? tu parviens à trouver la solution?
Marsh Posté le 30-06-2006 à 10:52:29
bipeuh a écrit : juste au passage, tu l'as testé ton prog? tu parviens à trouver la solution? |
Marsh Posté le 30-06-2006 à 12:16:12
big_dadi_fat a écrit : pourquoi ? |
http://mapage.noos.fr/emdel/notes.htm#saisie
http://mapage.noos.fr/emdel/notes.htm#fichiers
Marsh Posté le 30-06-2006 à 12:53:00
Emmanuel Delahaye a écrit : http://mapage.noos.fr/emdel/notes.htm#saisie |
waw c'est trés bien expliqué aussi sur le site d'Emmanuel Delahaye;
merci
Marsh Posté le 18-06-2006 à 12:31:04
slt,
j' essay de programmer une sorte de jeu, le pc génère un nombre entre 1 et 100, l' utilisateurs doit donner le bon nombre au pc, si ce n'est pa le bon nombre, le pc "aide" l' utilisateur.
mon problème, c'est que dès que je compile et que je lance mon programme, il me demande le nombre je rentre un nombre entre 1 et 100, j'appuie sur entrée et sa bug, il veut envoyer un rapport d'erreurs a microsoft.
voici mon code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
//on definie les variables
const long MAX = 100, MIN = 1;
long nombreMystere = 0;
long nombreEntree = 0;
//generation du nombre
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do
{
//on demande le nombre
printf ("quel est le nombre?\n" );
scanf ("%ld", nombreEntree);
//on compare le nombre entrée avec le nombre mystere
if (nombreMystere > nombreEntree)
printf ("c'est plus!\n" );
else if (nombreMystere < nombreEntree)
printf ("c'est plus!\n" );
else
printf ("bravo! vous avez trouvez le nombre mystère!!!\n\n" );
} while (nombreEntree = nombreMystere);
system("PAUSE" );
return 0;
}