Aide sur la programmation

Résolu/Fermé
Label_1813 Messages postés 2 Date d'inscription mardi 11 juin 2019 Statut Membre Dernière intervention 15 juin 2019 - 11 juin 2019 à 23:05
Label_1813 Messages postés 2 Date d'inscription mardi 11 juin 2019 Statut Membre Dernière intervention 15 juin 2019 - 15 juin 2019 à 16:16
Bonsoir à tous!
Je suis débutant en programmation C.
J'ai établi un algorithme qui me permet d'échanger les valeurs de deux variables et de les affichées.
Le problème se pose lorsque j'entre une chaîne de caractère ou un caractère !

Ma question est comment dois-je faire pour que mon programme n'accepte que les chiffres??

Merci d'avance !
A voir également:

2 réponses

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
13 juin 2019 à 11:18
Bonjour Label_1813,

Il y a plusieurs façons, et elles dépendent en partie de la façon dont tu prend l'entrée du clavier (avec scanf ou fgets) et de ce que tu appelles des chiffres (un entier signé ou non, ou un nombre à virgule et le type C correspondant).

Si tu utilises scanf pour demander un entier, tu peux juste vérifier la valeur de retour de la fonction, qui retourne le nombre d'éléments de ta liste de spécificateurs et d'arguments correspondants capturés avec succès.

http://www.cplusplus.com/reference/cstdio/scanf/

Par exemple,
scanf("%d", &entier);
a un seul spécificateur "%d" et donc un seul argument d'adresse d'un int attendu, et doit donc retourner 1 en cas de succès.

#include <stdio.h>

int main(void) {
    int entier = 0;


    printf("Entier : ");
    fflush(stdout);
    while (scanf("%d", &entier) != 1) {
        /* vider stdin */
        int c;
        while ((c = getchar()) != '\n' && c != EOF)
            ;
        /* se plaindre */
        printf("Erreur, veuillez saisir un entier : ");
        fflush(stdout);
    }
    printf("Merci, vous avez tapé l'entier : %d\n", entier);
    printf("(note : les caractères éventuellement saisis après "
            "ce nombre entier sont ignorés et demeurent dans stdin)\n");

    return 0;
}

Tu peux aussi utiliser
fgets()
et tenter de convertir la saisie avec
strtol()
, c'est un peu plus compliqué, mais cela permet plus de contrôle.

Dal
1
Label_1813 Messages postés 2 Date d'inscription mardi 11 juin 2019 Statut Membre Dernière intervention 15 juin 2019
15 juin 2019 à 16:16
Super merci infiniment
0
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 704
12 juin 2019 à 07:21
0