Programmation C, problème :(

Programmation C, problème :( - C - Programmation

Marsh Posté le 14-06-2006 à 10:12:05    

Hello, je suis vraiment nul en programmation C, et la je suis face a un problème que je n'arrive pas a résoudre . Quelqu'un pourrai m'aider , merci d'avance :P. C'est de la programmation C très très très basic ...
 
/*Problème 2 ; Interdire la saisie d'autre chose que les lettres de l'alphabet, le trait d'union et l'apostrophe et faire apparaître une message d'erreur quand le caractère saisie est interdit !!!! */
 
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
 
main()
{
 char NOM[40], PRENOM[40];
 printf("Introduisez votre nom et votre prenom: \n" );
 scanf("%s %s", NOM, PRENOM);
 
 printf("\nBonjours %s %s !\n", NOM, PRENOM);
 printf("Votre nom est composé de %d lettres. \n",
 strlen (NOM) + strlen (PRENOM));
 
 
 getch();
   return 0;
}


---------------
Que le ciel ne vous tombes pas sur la tête ^^
Reply

Marsh Posté le 14-06-2006 à 10:12:05   

Reply

Marsh Posté le 14-06-2006 à 10:26:58    

Tu saisies caractère par caractère au lieu de string par string, tu vérifies si le code ascii correspond à l'un de ceux que tu veux traiter, et selon le cas, tu trait le char ou tu le dégages.

Reply

Marsh Posté le 14-06-2006 à 12:05:12    

en utilisant plutot les fonctions déclarées dans ctype.h, pour rester independant du jeu de caracteres

Reply

Marsh Posté le 14-06-2006 à 15:12:14    

Il faut travailler char par char. Ou sinon faire une verification sur tout le string que l'utilisateur a saisi. Ya pas d'autre choix
 
Pour travailler char par char il faut faire une boucle du genre :
do{
     caractere_saisi = getch();
     while(fonction_de_verif(caractere_saisi))
};
 
Pour travailler string par string, t'es oubligé de parcourir chaque char de ta chaine et verifier s'il est valide.
 
A=
 
 
 

Reply

Marsh Posté le 14-06-2006 à 15:15:16    

le shimiliczbick avance

Reply

Marsh Posté le 14-06-2006 à 15:20:19    

_darkalt3_ a écrit :

le shimiliczbick avance


Schmilblick, c'est pourtant pas compliqué...
 
http://fr.wikipedia.org/wiki/Schmilblick
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 14-06-2006 à 15:21:32    

quand Coluche imite un gars alcoolisé, il le prononce comme ça :o

Reply

Marsh Posté le 14-06-2006 à 15:27:00    

_darkalt3_ a écrit :

quand Coluche imite un gars alcoolisé, il le prononce comme ça :o

C'est pas Coluche qui a inventé le Schmilblick... C'est Guy Lux (trops jeunes pour l'avoir connu...)
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 14-06-2006 à 15:28:04    

En fait le Schmilblick, c'est du Pierre Dac (voir ton lien)... Et j'ai pas dit que c'était coluche qui l'avait inventé  [:moule_bite]

Message cité 1 fois
Message édité par _darkalt3_ le 14-06-2006 à 15:28:55
Reply

Marsh Posté le 14-06-2006 à 15:41:45    

_darkalt3_ a écrit :

En fait le Schmilblick, c'est du Pierre Dac (voir ton lien)...

Exact, puis popularisé par Guy Lux...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 14-06-2006 à 15:41:45   

Reply

Marsh Posté le 14-06-2006 à 17:43:53    

brethold a écrit :

Il faut travailler char par char. Ou sinon faire une verification sur tout le string que l'utilisateur a saisi. Ya pas d'autre choix
 
Pour travailler char par char il faut faire une boucle du genre :
do{
     caractere_saisi = getch();
     while(fonction_de_verif(caractere_saisi))
};


Bon, déjà la syntaxe est mauvaise. Un do... while s'écrit comme ça:

do{
     caractere_saisi = getch();
} while(fonction_de_verif(caractere_saisi));

[:aloy]
 
Mais on peut faire directement:

while(fonction_de_verif(caractere_saisi=getch()));



---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed