Inutile, en plus d'être spécifique à windows (tu perds en portabilité pour rien, vu que tu ne te sert pas de ce header).
Tu dois demander une chaîne de caractère à l'utilisateur, et non un seul caractère. Exemple:
Code C/C++ :
char lettres[256] = {0};
scanf("%s", lettres);
printf("La chaîne entrée est %s\n", lettres);
/*onmas di que sa servait a enlever la valeur*/
valeur=lettre-'O';
Non, ça ne retire pas une valeur. De plus c'est -'0' et non -'O'. Ca permet de récupérer la valeur entière d'un nombre ascii.
Par exemple, ça permet de convertir '3', en 3.
Pourquoi ça fonctionne: En C, un caractère est un nombre. Par exemple, le caractère ascii 'a' correspond au nombre 95. Donc 'a' équivaut à 95 parce que 'a' est à la 95ème positions dans la table ascii.
Le caractère '0' et le caractère '1' on un chiffre de décalage, donc si on soustrait la position de '1' dans la table ascii par rapport au caractère '0', ça donne 1.
Si tu veux afficher la valeur entière c'est donc %i et non %c
Pour résoudre ton exercice, il te suffit de créer une deuxième chaîne de caractère, et de remplir celle-ci en fonction de ce que tu vois dans la première chaine. Fait le par étape:
1) Commence par faire un code qui copie la première chaine dans la deuxieme.
2) Modifie ensuite ce code, de manière à ce que les chiffres soit pris en compte, et qu'ils fassent une répétition de lettre (ce qui équivaut à dire, recopie moi plusieurs fois la lettre).