Probleme en C#

jason-live Messages postés 218 Statut Membre -  
jason-live Messages postés 218 Statut Membre -
Bonjour, par exemple quand je fais ça :
char prenom[03];
printf (" ton prenom ? \n);
scand ("%s&, &prenom);
printf ("tu tappelle %s \n", prenom);

et bien je ne vois pas à quoi sert le chiffre entre crochet le 03 .. ???
parce que si ça sert à limiter le nombre de caractère que l'on peut mettre... c'est raté quand j'écris un mot en plus de 3 lettres ou 10 lettres, le 2eme printf m'affiche le prenom en entier, quelqu'un peut m'expliquer ?

5 réponses

jason-live Messages postés 218 Statut Membre 35
 
up
0
scriptiz Messages postés 1494 Statut Membre 425
 
Il me semble que ton problème c'est en C++ et non pas en C#...

Bien que n'ayant fait que très peu de C++, il me semble que tu peux continuer à ajouter des choses dans un tableau malgré la taille initiale prévue, mais tu risque d'écraser d'autres emplacements mémoires, initialement non prévu pour ton tableau, voir même sortir de la plage allouée à ton programme et là c'est le plantage de ton programme (ou de la machine ^^).

Donc c'est normal qu'il affiche le bon mot car il me semble que scand() doit déposer en mémoire les caractères lus puis mettre un caractère bien spécifique à lui pour indiquer la fin. Ainsi quand tu souhaite afficher ce que l'utilisateur à entré au clavier, il ne s'arrête pas tant qu'il ne rencontre pas ce caractère de fin et il sort à nouveau de l'emplacement prévu pour ton tableau, afin de lire les autres caractères.

Fait bien attention car si tu sort des emplacements mémoire prévus, ce n'est jamais bon ^^ (Enfin de nos jours ton OS doit gérer ces dépassement s'ils sont dangereux ou en dehors de ton programme et empêcher ton ordi de crasher).

Voilà, qu'on me corrige si j'ai faux, mais ne connaissant pas bien le C++ j'essaye de raisonner pour t'aider ;)
0
jason-live Messages postés 218 Statut Membre 35
 
j'ai un autre problème je vais vous donner le programme :
#include <stdio.h>
int main()
{
int nomDePersonnes;
char MotDePasseDavid[20];
char MotDePasseJason[20];
do
{
printf (" PROGRAMME By David Et Jason \n\n");
printf ("1. David \n");
printf ("2. Jason \n");
printf ("0. Fin du programme \n");
printf ("Appuyez sur le chiffre vous concernant \n");
scanf ("%d", &nomDePersonnes);
printf ("\n\n");

switch (nomDePersonnes)
{
case 1:
printf ("vous avez tappez le nombre 1 donc vous vous appelez David \nEntres ton mot de passe pour rentrer dans ta session ?");
scanf ("%s", &MotDePasseDavid);
break;
case 2:
printf ("vous avez tappez le nombre 2 donc vous vous appelez Jason \nEntres ton mot de passe pour rentrer dans ta session ?");
scanf ("%s", &MotDePasseJason);
break;
case 0:
printf ("Fin du programme \n");
break;
default:
printf ("vous n'avez pas tappez de nombre correct alors vous n'avez pas de prenom dans cette liste \n");
break;
}
if (MotDePasseDavid != abc123)
{
printf ("echec de l'authentification\n");
}
}
while(nomDePersonnes != 0);
return 0;
}

donc le admettons que le mot de passe de david soit : abc123
quand le programme demande a david de tapper le mot de passe, je voudrais que si david ne tappe pas abc123 que il y aille marquer echec de l'authentification.
Voici le code qui montre ça mais ça ne se compile pas j'ai un problème:
if (MotDePasseDavid != abc123)
{
printf ("echec de l'authentification\n");
}
SI mot de passe n'est PAS abc123 MARQUER echec de l'authentification
0
calibos
 
Salut,

MotDePasseDavid est de type char donc ll faut encadrer la chaine de caractère avec des double cottes :
MotDePasseDavid = "abc123";
La comparaison des chaines de caractères de fait avec la fonction strcmp() et non avec == ou !=
0
pacorabanix
 
il est de type char * pour être précis (c'est un tableau, et son nom est un pointeur vers le début de la chaine)

Au cas où pour que tu saches, là tu fais du C plutôt , même si ça compile bien en C++ aussi ;)

en C++ on utiliserait plutot String (type du standard pour les chaines de caractères) et pour écrire sur la console des cout << "salut" << endl; et on pourrait comparer des chaines (String) avec ==.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jason-live Messages postés 218 Statut Membre 35
 
oui je fais du C et non du C++ ne me parlez pas de C++ svp
mais j'ai pas compris pour comparé :S
0