IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

banaliser le caractére "entrer" dans ce petit bout de code!


Sujet :

C

  1. #1
    Débutant
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Points : 97
    Points
    97
    Par défaut banaliser le caractére "entrer" dans ce petit bout de code!
    bonjour tout le monde,
    je voulais créer un tableau de type int et qui va contenir 0 ou 1
    0 :si l'indice correspondant à la case coincide avec le code ASCII du caractère entré au clavier.1 sinon..
    le probléme c est que aprés avoir tapé mon caractère je suis obligé de taper "entrée" pour passer à l autre caractére .mon code le considère(ce qui est normale" comme un caractére...je veux le banaliser,mon code est le voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #include<stdio.h>
    #include<stdlib.h>
    /***********Main******************/
     
    void main()
    {
    	int tab[25];
    	int i;
    	char c;
    	for(i=0;i<4;i++)//je veux entrer que cinq caractére par exemple!
    	{	printf(" entrer le caractere correspondant au code ASCII de valeur %d\n",i);
    	    scanf("%c",&c);
    		printf("\n%d\n",c);//j'affiche son code ASCII
     
    		if(c==i)//si le code ASCII correspond à l'indice de tableau
    			tab[i]=1;
    		else
    			tab[i]=0;
    	}
    	for(i=0;i<4;i++)
    		printf("%d",tab[i]);
     
     
    }
    NB:l'indice de tableau indique le code ASCII du caractère qui doit etre entré

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Si tu veux récupérer le \n avec, utilise getchar() au lieu de scanf("%c")...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    un getchar() serait d'une plus grande utilité que ton scanf il me semble!!

    Par contre concernant ce que tu souhaites réaliser j'avoue que je suis un peu dans le flou, tu souhaites comparer les valeurs ascii avec l'incrément de ton tableau

    EDIT : devancé

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    1 - Tout d'abord, sache qu'ASCII n'a rien à voir avec le langage C. La manière de représenter les caractères dans la mémoire de l'ordinateur dépend du système d'exploitation et non du langage C. C'est là qu'intervient ASCII ...

    2 - main retourne toujours un int.

    3 - Si ton système utilise un système de codage basé sur ASCII, le caractère '0' aura pour code 48, le caractère '1' pour code 49 et ainsi de suite (comme dans ASCII ...). Si tu veux donc avoir la "valeur numérique" correspondante d'un caractère entre '0' et '9', tu dois retirer 48. Par exemple : '1' - 48 vaut 1. Ou pourquoi pas '1' - '0', car '0' vaut 48.

    4 - Chaque fois que tu appuies sur ENTREE, un caractère '\n' est généré. Ce caractère sera lu lors d'un prochain scanf. Tu dois chercher d'autres techniques de saisie.

  5. #5
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Si tu veux récupérer le \n avec, utilise getchar() au lieu de scanf("%c")...
    scanf comme getchar sait lire le '\n'. Mais le problème justement c'est qu'il faut le passer, pas le lire.

  6. #6
    Débutant
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par Melem Voir le message
    Chaque fois que tu appuies sur ENTREE, un caractère '\n' est généré. Ce caractère sera lu lors d'un prochain scanf. Tu dois chercher d'autres techniques de saisie.
    Exactement,c'est la mon probléme!!
    pour le getchar(),je l'ai essayé mais j'obtiens toujours le meme probleme!

  7. #7
    Débutant
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par anny0 Voir le message
    Par contre concernant ce que tu souhaites réaliser j'avoue que je suis un peu dans le flou, tu souhaites comparer les valeurs ascii avec l'incrément de ton tableau

    EDIT : devancé
    les indices de mon tableau varient de 1 à 256,si par exemple à la 65eme case je fais entrer 'A' (de code ASCII 65) je donne à tab[65]=1,comme quoi la case 65 contient effectivement le A.
    j'espére que tu as compris mon raisonnement!

  8. #8
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par s-ehtp
    Exactement,c'est la mon probléme!!
    pour le getchar(),je l'ai essayé mais j'obtiens toujours le meme probleme!
    Bah, fgets ! Cette fonction permet de lire une ligne (donc le '\n' y compris), tu n'as qu'à retenir ensuite le premier caractère. Tu fais donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /* saisir un caractere */
     
    char c, t[10];
     
    fgets(t, sizeof(t), stdin);
    c = t[0];
    Tu peux améliorer le code si tu veux.

  9. #9
    Débutant
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Points : 97
    Points
    97
    Par défaut
    @melem:mais utilisation de fgets n'est faite que pour le cas des fichiers ...non?

  10. #10
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par s-ehtp Voir le message
    @melem:mais utilisation de fgets n'est faite que pour le cas des fichiers ...non?
    Exact. Et heureusement que le clavier (tout comme n'importe quel autre périphérique physique) pour le langage C est un fichier ! Le langage C ne connaît pas de matériel mais de fichier. Pour lire l'entrée standard (qui est par défaut attaché au clavier ...), t'as qu'à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char s[100];
    fgets(s, sizeof(s), stdin);

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo