Se connecter avec
S'enregistrer | Connectez-vous

Taper un nom en C

Dernière réponse : dans Programmation

Je fais un programme, et j'aimerais bien que l'utilisateur qui rentre dans le programme entre son nom et comme cela pour la fin du programme, je peux lui dire "merci (son nom) d'avoir joué" par exemple ...

Le principe est donc tres bète mais lorseque je lui demande d'entré un nom, je peux taper le nom que je veux, mais quand je le print autre par dans le programme, il ne me met que la 1er lettre du nom ... je crois que c'est une histoir de "%s" ou "%c", ... je m'y perd ...
Je ne sais pas lequel mettre ...

Voici mon code source :

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>


int nb;
char choix_j;
char reponse;
int x;
int rep;
int il_y_a_une_erreur;
char nom;

main()
{
clrscr();
gotoxy(12,12);
printf("Veillez inserez votre nom : ");
gotoxy(12+28,12);
scanf("%c", &nom);
clrscr();
textcolor(15);

do
{
randomize();
nb = random(2000000000)-1000000000;

gotoxy(20,11); cprintf("%c,", nom);
gotoxy(20,12); cprintf("Le nombre que l'ordinateur a tir‚ est :");
gotoxy(35,14); cprintf("[%d]", nb);

do
{

textcolor(15);
gotoxy(25,20); cprintf("Voulez-vous continuer ? (O/N)");
gotoxy(35,22); cprintf("[ ]");
gotoxy(37,22);


choix_j=toupper(getche());

if(choix_j == 'O' || choix_j == 'N')
{
if(choix_j == 'O')
{
x=0;
}
else
{
x=1;
clrscr();
gotoxy(30,12); printf("Merci d'avoir jou‚ %c" ,nom);
gotoxy(23,13); printf("appuyez sur une touche pour arrŠter");
gotoxy(28,14); printf("et quitter le programme");
getch();
}
il_y_a_une_erreur=0;
}
else
{
textcolor(420);
gotoxy(22,24);
cprintf("ERREUR, vous devez r‚pondre par O ou N ...");
il_y_a_une_erreur=1;
}

}while(il_y_a_une_erreur==1);
}while(x==0);

}


Merci pour vos aides !!!

Autres pages sur : taper nom

Lassé par la pub ? Créez un compte

D'accor, c'est pas un char qu'il faut mettre ... j'imagine que c'est pas un int non plus ... mais je vais t'avouer que je ne vois pas ce que je peux mettre d'autre ... (SVP ...)

Et je veux bien enlevé les gotoxy mais sa va foutre le bordel dans la mise en page ...

okk .. sympa ce forum !!!

Pourquoi les gens sont si désagrable ...
et je ne vois pas du tout a quoi sert le forum en C si quand je pose une question, je me fait critiqué et même insulter ... :s
Qu'est ce que je t'ai fais moi kangOl .. t'es bien gantil mais si c pour avoir des réponse "achète un bouquin bordel" j'aurais bien pu y penser moi même !!!!!!!!

Wi, sa g remarqué qu'il a pas l'air d'aimer les débutant !!!
Sa parait si logique pour lui mais pour moi je ne connais pas les char, int, ...

Si personne veux donner d'explication, k'on le diz direct ke se forum est pour les gens tres avencé (je ne voi po l'utilité mais bon)
Expert Programmation

ou lalalalalala

ils sont beau les codes ici

bon simple expliquation: un char c'est un charactere seul, et une chaine est un tableau de char suffisament grand pour pourvoir stocker toute la chaine , si la longueur de la chaine n'est pas assez grande il y a un depassement de tampon (et le programme plante generalement)

donc il faut que reponse soit un tableau de caractere

ensuite scanf :

Citation :
En plus de ces attributs peut se trouver un champ optionnel de
longueur maximale, exprimée sous forme d'entier, entre le caractère %
et l'indicateur de conversion. Si aucune longueur n'est donnée, une
valeur infinie est utilisée par défaut (avec une exception, voir plus
bas). Autrement, la conversion examinera au plus le nombre de car-
actères indiqués. Avant que les conversions ne commencent, la plupart
d'entre elles éliminent les blancs. Ces espaces blancs ne sont pas
comptés dans le champ de largeur maximale.

Citation :
%s Correspond à une séquence de caractères différents des car-
actères blancs. Le pointeur correspondant doit être du type
char *, et la chaine doit être assez large pour accueillir
toute la séquence, ainsi que le caractère NUL final. La conver-
sion s'arrête au premier caractère blanc, ou à la longueur max-
imale du champ.

Citation :
%c Correspond à une séquence de width caractères (par défaut 1).
Le pointeur associé doit être du type char *, et il doit y
avoir suffisament de place dans la chaîne pour tous les carac-
teres. Aucun caractère NUL final n'est ajouté. Les caractères
blancs de début ne sont pas supprimés. Si on veut les éliminer,
il faut utiliser un espace dans le format.

(Manual page scanf(3))

PS : <conio.h> est a bannir
Expert Programmation

Dumoria a écrit(En complément de la documentation) Par exemple dans ton cas, tu feras
  1. char nom[20];
  2. ....
  3. scanf("%s",nom);

parce que nom est l'adresse de ta chaine.


surtout pas !!!!

deja pourquoi n'a t'il pas le droit de mettre des espace dans son nom ? il n'a pas le droit de s'appeler "pierre antoine" ?
et pourquoi doit t'il planter si on entre plus de 19 caractere ?
scanf("%19c",nom); non mais ...

faut aussi qu'il pense a initialiser sa chaine aussi ...
Expert Programmation

%c Correspond à une séquence de width caractères (par défaut 1).
Le pointeur associé doit être du type char *, et il doit y
avoir suffisament de place dans la chaîne pour tous les carac-
teres. Aucun caractère NUL final n'est ajouté. Les caractères
blancs de début ne sont pas supprimés. Si on veut les éliminer,
il faut utiliser un espace dans le format.

(bouh on peux pas mettre du gras dans un quote)

Citation :
deja pourquoi n'a t'il pas le droit de mettre des espace dans son nom ? il n'a pas le droit de s'appeler "pierre antoine" ?
et pourquoi doit t'il planter si on entre plus de 19 caractere ?
scanf("%19c",nom); non mais ...


C'est pour cette raison que personnellement je n'utilise plus scanf, mais plutot getchar.
C'etait juste pour donner une solution simple pour commencer, parce que bien sur, si tu commences à prendre des cas particuliers... Je pense que notre ami sera deja bien content de pouvoir saisir "pierre-antoine" !
Lassé par la pub ? Créez un compte