Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1176 Le 26/10/2011, à 21:41

Rolinh

Re : /* Topic des codeurs [6] */

Вiɑise a écrit :

Je le craignais, vous commencez à débattre et au final j'sais plus quoi faire. big_smile

Bon jvais déjà voir si j'ai pigé comment utilisé empty_buf…

*sommeil*

T'occupes pas trop de ce qu'on raconte ^^
empty_buf n'est pas compliquée à utiliser: il suffit que tu l'appelles après la récupération de la saisie utilisateur.

Hors ligne

#1177 Le 26/10/2011, à 21:44

Rolinh

Re : /* Topic des codeurs [6] */

Вiɑise a écrit :

Oué bah faut croire que je l'ai mal fait

biaise@Tonton:~/Documents/DUT/c/programmes perso/CH5$ gcc -o 5-3 5-3.c -Wall
/tmp/ccj6T3l0.o: In function `main':
5-3.c:(.text+0xc0): undefined reference to `empty_buf'
collect2: ld returned 1 exit status

J'étais pas clair ici ou bien tu ne lis pas toutes les réponses?

Hors ligne

#1178 Le 26/10/2011, à 21:44

Вiɑise

Re : /* Topic des codeurs [6] */

Ton explication est trop vague. La syntaxe exacte, ce que je dois écrire, c'est quoi ?

Pour l'instant j'ai mis

void empty_buf(void);

avant le main comme tu l'as indiqué tout à l'heure. Ensuite, à la ligne où je souhaite vider le buffer j'ai mis

empty_buf();

Et à la compilation, je le remets car pas sûre que vous ayez vu mon edit, j'ai :

biaise@Tonton:~/Documents/DUT/c/programmes perso/CH5$ gcc -o 5-3 5-3.c -Wall
/tmp/ccj6T3l0.o: In function `main':
5-3.c:(.text+0xc0): undefined reference to `empty_buf'
collect2: ld returned 1 exit status

Hors ligne

#1179 Le 26/10/2011, à 21:46

The Uploader

Re : /* Topic des codeurs [6] */

Rolinh a écrit :

@xapantu: je n'ai rien contre les opérateurs ternaires et je trouve même cela plutôt bien. En revanche, le mettre comme ça directement dans un puts... hmm

Je trouve ça tout à fait lisible. neutral


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1180 Le 26/10/2011, à 21:48

Вiɑise

Re : /* Topic des codeurs [6] */

On est trop rapide nos réponses se croisent big_smile

Maintenant ça compile, mais ça ne fonctionne toujours pas. Le code est à présent :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void empty_buf(void);
int main (void)

{

    int nb_alea=0;
    int rep=0;
    char choix=' ';
    
    do {
    
    srand (time (NULL));
    
    nb_alea=rand() %100;
    
    
        do {
            printf("Devinez un nombre entre 0 et 99 : \n");
            scanf("%d",&rep);
        
            if (rep>nb_alea)
                printf("C'est moins !\n");
            else
                if (rep<nb_alea)
                    printf("C'est plus !\n");
        }                    
        while (rep!=nb_alea);
        
        void empty_buf(void);
    
        printf("Félicitations !\nPour rejouer, tapez R : \n");
        scanf("%c",&choix);
    }
    while ((choix=='R') || (choix=='r'));       
    
    return 0;
    
}    
    
                      
    
    

    

Dernière modification par Вiɑise (Le 26/10/2011, à 21:50)

Hors ligne

#1181 Le 26/10/2011, à 21:50

Rolinh

Re : /* Topic des codeurs [6] */

@Вiɑise: postes-nous ton code en entier.

EDIT:

Вiɑise a écrit :

On est trop rapide nos réponses se croisent big_smile

ouais tongue

@The Uploader: bah... moi pas. Je suis curieux de voir ce qu'en pense grim mais j'ai l'impression qu'il va plutôt se ranger de mon côté (je peux me tromper).

Dernière modification par Rolinh (Le 26/10/2011, à 21:51)

Hors ligne

#1182 Le 26/10/2011, à 21:50

Вiɑise

Re : /* Topic des codeurs [6] */

Hors ligne

#1183 Le 26/10/2011, à 21:54

Rolinh

Re : /* Topic des codeurs [6] */

maismaismais... ? Elle est passée où ta fonction empty_buf? Tu l'as juste pas mise dans le bout de code que t'as posté ici?

Hors ligne

#1184 Le 26/10/2011, à 21:56

Вiɑise

Re : /* Topic des codeurs [6] */

si mais ça compilait pas. Alors j'ai remis     void empty_buf(void); à la place. ça compile mais ça marche pas.

Hors ligne

#1185 Le 26/10/2011, à 22:00

Rolinh

Re : /* Topic des codeurs [6] */

Un doute m'assaille: tu n'as pas encore appris comment définir une fonction et l'appeler?

Hors ligne

#1186 Le 26/10/2011, à 22:00

Вiɑise

Re : /* Topic des codeurs [6] */

Voilà.

Hors ligne

#1187 Le 26/10/2011, à 22:08

Rolinh

Re : /* Topic des codeurs [6] */

Ok. J'avais zappé que tu suivais ça. Ben la page d'après, c'est les fonctions.
M'enfin, je n'ai pas lu le tutoriel du C sur le SdZ donc je ne sais pas trop ce qu'il vaut.

EDIT: ouais bah en fait, je n'aime pas ses exemples.
Mettre ça dans un cours, ça me fait tiquer (sur 4 lignes, 3 trucs me dérangent...).

void bonjour()
{
    printf("Bonjour");
}

Dernière modification par Rolinh (Le 26/10/2011, à 22:11)

Hors ligne

#1188 Le 26/10/2011, à 22:24

Вiɑise

Re : /* Topic des codeurs [6] */

Non je suis pas le SDZ, j'aime pas trop… Trop de smiley inutiles et c'est en ligne.

Donc tu viens de copier ce qu'il faut pas faire. Que faut il faire ? smile

J'ai mis
void empty_buf(void);
int main (void)

au début.

Mais au moment où je veux vider le buffer, je mets ?

Hors ligne

#1189 Le 26/10/2011, à 22:28

Rolinh

Re : /* Topic des codeurs [6] */

Вiɑise a écrit :

au moment où je veux vider le buffer, je mets ?

empty_buf();

Et il faut évidemment écrire la fonction empty_buf en dessous de ton main.
Exemple:

void empty_buf(void);
int main (void)
{
    /* blablabla */
}

/*
 * empty the stdin buffer
 */
void
empty_buf(void)
{
    int chr = 0;

    while (chr != '\n' && chr != EOF)
        chr = getchar();
}

Hors ligne

#1190 Le 26/10/2011, à 22:33

The Uploader

Re : /* Topic des codeurs [6] */

Rolinh a écrit :

Et il faut évidemment écrire la fonction empty_buf en dessous de ton main.

Euh c'est pas au dessus de la fonction où tu l'utilise, classiquement ?

Parce que là du coup faut lui expliquer le rôle de

void empty_buf(void);

au dessus du main. ^^


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1191 Le 26/10/2011, à 22:34

Вiɑise

Re : /* Topic des codeurs [6] */

heu… ça a une tête bizarre. Il manque pas des ; ?

Et pourquoi c'est marqué void au dessus de empty_buf(void) ?

Hors ligne

#1192 Le 26/10/2011, à 22:36

Elzen

Re : /* Topic des codeurs [6] */

Au fait, un petit logiciel de quizz fait à partir du code que j'vous ai posté hier, si ça vous intéresse.

Je n'sais pas si ça vaille le coup que je fasse une entrée pour ça dans le flux RSS…

Dernière modification par ArkSeth (Le 26/10/2011, à 22:47)

Hors ligne

#1193 Le 26/10/2011, à 22:42

Rolinh

Re : /* Topic des codeurs [6] */

The Uploader a écrit :

Euh c'est pas au dessus de la fonction où tu l'utilise, classiquement ?

Parce que là du coup faut lui expliquer le rôle de

void empty_buf(void);

au dessus du main. ^^

Oh, peut-être mais ce n'est pas une habitude que j'ai tongue Je mets toujours le main dans le haut de mon code et déclare les prototypes avant si je n'utilise pas de headers.

Et moi qui tâchais de faire au plus simple... ^^ Enfin bon, tout compte fait ce n'est pas un mal qu'elle voit à quoi servent les prototypes.

Вiɑise a écrit :

heu… ça a une tête bizarre. Il manque pas des ; ?

Peut-être. C'était juste un exemple pas du tout complet. Ou ça?

Вiɑise a écrit :

Et pourquoi c'est marqué void au dessus de empty_buf(void) ?

Parce que c'est la déclaration du prototype de la fonction. Mais on me dit dans l'oreillette que c'est trop compliqué et que je ne dois pas en parler. tongue

Hors ligne

#1194 Le 26/10/2011, à 22:46

Вiɑise

Re : /* Topic des codeurs [6] */

le code

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void empty_buf(void);
int main (void)

{

    int nb_alea=0;
    int rep=0;
    char choix=' ';
    
    do {
    
    srand (time (NULL));
    
    nb_alea=rand() %100;
    
    
        do {
            printf("Devinez un nombre entre 0 et 99 : \n");
            scanf("%d",&rep);
        
            if (rep>nb_alea)
                printf("C'est moins !\n");
            else
                if (rep<nb_alea)
                    printf("C'est plus !\n");
        }                    
        while (rep!=nb_alea);
        
        void
        void empty_buf(void);
    
        printf("Félicitations !\nPour rejouer, tapez R : \n");
        scanf("%c",&choix);
    }
    while ((choix=='R') || (choix=='r'));       
    
    return 0;
    
}

La compilation

biaise@Tonton:~/Documents/DUT/c/programmes perso/CH5$ gcc -o 5-3 5-3.c -Wall
5-3.c: In function ‘main’:
5-3.c:34:9: error: two or more data types in declaration specifiers

Hors ligne

#1195 Le 26/10/2011, à 22:49

Rolinh

Re : /* Topic des codeurs [6] */

Quelqu'un pourrait lui expliquer? Parce que je ne comprend pas où je n'ai pas été clair mais apparemment ça ne passe pas. sad

Hors ligne

#1196 Le 26/10/2011, à 22:54

Вiɑise

Re : /* Topic des codeurs [6] */

Si ça ne demande pas trop de temps, stp, copie puis colle mon code en corrigeant mes gourdes concernant vidage de buffer, et là je comprendrai.

Seulement au sujet du buffer hein, en fait, seulement les trucs qui ne sont pas fonctionnels. Les trucs fonctionnels mais "pas joli" ou "pas propre" laisse c'est normal. je reviens sur mes vieux codes au fur et à mesure de mon apprentissage de toute façon.

Hors ligne

#1197 Le 26/10/2011, à 23:03

Rolinh

Re : /* Topic des codeurs [6] */

Bah en fait, je ne comprend pas que tu mettes encore ça:

void
void empty_buf(void);

en plein milieu de ton main et que la fonction empty_buf n'apparaisse même pas dans ton code alors que je viens de t'expliquer ça.
Je préfère donc ne pas répondre pour le moment et laisser le soin à quelqu'un d'autre qui saura peut-être mieux s'y prendre que moi.

Hors ligne

#1198 Le 26/10/2011, à 23:05

Вiɑise

Re : /* Topic des codeurs [6] */

Mais si elle apparrait dans le code. o___O
Et pour le lien : entre ce que tu mets dans l'explication en premier et le code exemple, c'est pas pareil… ou alors j'ai pas du tout pigé l'exemple.

Hors ligne

#1199 Le 26/10/2011, à 23:13

Rolinh

Re : /* Topic des codeurs [6] */

Oui mais non mais c'est que... :'(
...
*soupir*
...
C'est pour ça que je voulais laisser le soin à quelqu'un d'autre de répondre.

Dans ton main, tu appelles ta fonction de cette manière:

empty_buf();

quand tu veux vider ton buffer. C'est ce que j'essayais de t'expliquer.
Pour le reste, le squelette de ton programme est aussi dans mon post. Tu n'as qu'à écrire le main et appeler la fonction empty_buf() quand tu en as besoin.

Sur ce, je vais aller me coucher. Je finirais de lire l'article d'ArkSeth demain. Bonne nuit.

Hors ligne