Problème avec printf ^^
RésoluNabla's Messages postés 18201 Date d'inscription Statut Contributeur Dernière intervention -
Alors voici ma ligne de code :
Printf("\nMonsieur %d %d declare : %d ",nom, prenom, avis);
Il me met erreur sur cette ligne mais je ne voit pas l'erreur. je comence juste le C ^^
Merci d'avance
Configuration: Windows XP Firefox 3.0.11
37 réponses
- 1
- 2
Problème d'affichage en C : l'utilisation de printf avec des chaînes de caractères et des variables nom, prénom et avis, lorsque l'on tente d'afficher des valeurs avec des %d. La meilleure réponse indique d'utiliser le format %s pour les chaînes de caractères et propose d'adapter l'exemple en printf("\\nMonsieur %s %s declare : %s", nom, prenom, avis). D'autres messages expliquent comment déclarer correctement les chaînes avec des tableaux char nom[100], prenom[100], avis[100], puis lire avec scanf et afficher avec printf. En cas de difficultés supplémentaires, plusieurs échanges soulignent aussi l'importance de la taille des tableaux et des risques de dépassement mémoire lors des entrées et des sorties.
-
%d c'est pour les doubles...
à priopri toi tu veux des chaines de caractères, il faut utiliser %s (pour string)Printf("\nMonsieur %s %s declare : %s ",nom, prenom, avis);
pour en savoir plus: http://www.cplusplus.com/reference/cstdio/printf/ -
-
salut
ce sont des chaines de caractères et non des int, tu les déclares comme cela :
char nom,prenom [20], char avis [15]; -
Voici mon programme en entier :
int main(int argc, char *argv[]) { int vie,joueur, ennemy; vie = 5; joueur = 5; ennemy = 5; printf("Il y a %d joueurs qui ont chacuns %d vies. \nIls doivent combatre %d ennemy ensemble.\n",vie, joueur, ennemy); printf("Entrer un Nombre :"); int mort =0; scanf("%d", &mort); int ennemy2, ennemy3; ennemy2 = ennemy - mort + joueur ; ennemy3 = ennemy2 + mort - ennemy ; printf ("Vous avez tuez %d ennemy, Mais %d arrive en plus. \nIl y a donc maintenant %d ennemy.\n",mort, ennemy3, ennemy2); printf("Entrez votre Prenom : "); int prenom = 0, nom = 0, avis = 0; scanf("%s",&prenom); printf("Entrez Votre nom : "); scanf("%s",&nom); printf("\nQu'elle votre reaction a propose de ce programme ? "); scanf("%s",&avis); Printf("\nMonsieur %s %s declare : %s ",nom, prenom, avis); system("PAUSE"); return EXIT_SUCCESS; }
Et c'est la ligne :
Printf("\nMonsieur %s %s declare : %s ",nom, prenom, avis);
Qui Bloque . -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
en effet, tu écris :
int prenom = 0, nom = 0, avis = 0;
mais si tu utilise %s, tu parles de chaines de caractères et pas d'entiers, déclare ces 3 variables comme je t'ai indiqué.
petit conseil : déclare tes variable ensemble, c'est + lisible -
Salut,
tu déclares nom, prenom et avs en int donc c'est bien %d mais quand tu fais le scanf c'est bien des entiers que tu rentres? (série de chiffre, sans lettre) -
déjà, je ne vois pas comment nom et prenom peuvent être des int : ce sont des chaines de caractères
-
Je sais pas programmer encore ! donc aprennez moi plutôt que de me remballer !
Comment on détect les variable en chaine de caractere ?
char nom, prenom, avis ? -
je ne te "remballe" pas, je t'explique ton problème et je comprends ton statut de débutant...on est tous passés par là, alors reste poli, stp.
un int c'est un nombre entier : 1, 35, 560...sans virgule
un char (caractère), c'est une seule lettre : a, b, c, w...
une chaine de caractère est un ensemble de plusieurs lettre, tu déclares cela comme un tableau de char, par exemple, un nom ou un prénom sont des chaines de caractères (tu n'as pas de nom à une seule lettre).
tu suis?-
en effet...
int: entier sur 4 octets avec les nombres négatifs (par défaut c'est signed int si on veut etrehyper propre... jamais vu ;))
unsigned int: entier positif (permet d'avoir une valeur maximum 2 fois plus importante)
short: pareil, mais sur 2 octets (65536 valeurs possibles... dont de -32000 à +32000 ou de 0 à 65000 si on est en signed)
char (un octet): un charactère tout seul
string: chainde de charactères....
pour faire les chaines de charactères, tu peux prendre des objets string tout fait, ou utiliser un tableau de caractères, par exemple: char*nom[20] est un tableau de 20 case, permettant de stocker 19 caractères + le caractère de fin de chaine '\0' (très important).
bool: booléen (un octet car c'est dur de faire un seul bit!): vrai ou faux (true, false)
float, double : nombres à virgule...
comme ca a été dit plus haut, il est préférable de déclarer tes variables en haut de ton code, tout au meme endroit, c'est plus facile pour s'y retrouver...
pour cette partie par exemple :
int vie,joueur, ennemy;
vie = 5;
joueur = 5;
ennemy = 5;
j'aurai fait
int vie=5;
int joueur=5;
int ennemy=5;
je préfère, mais après chacun est libre de faire comme il veut
-
-
C'est simple, soit tu utilises des int (= nombres entiers) pour tes prénoms et noms pour des raisons de simplicité comme tu débutes (pas toujours facile de manipuler des strings (= chaine de caractères) au départ et dans ce cas pour les afficher tu utilises %d mais dans le scanf tu ne rentres que des chiffres, soit tu utilises des string que tu déclares comme un tableau de caractères (exemple char[20]) et dans ce cas tu ne dois pas dépasser le nombre de caractère entre crochet, pour les afficher tu utilises %s.
Après sache que le mieux est aussi de rester correct, on essaye de t'aider, la moindre des choses c'est de faire des efforts pour comprendre et de poser des questions calmement, sinon j'ai pleins d'autres choses à faire personnellement :) -
J'ai modifier en mettan char a la place de int mais il met toujour erreur sur la même ligne.
-
si tu parles toujours de tes variables nom et prénom, c'est char[nombre entier] qu'il faut mettre pour déclarer une chaine de caractères :
comme je te l'ai dit dans un précédent post :char nom,prenom [20], char avis [15];
ici, j'ai pris 15 et 20, mais à toi de choisir la taille que tu veux.
reposte ton code si besoin
-
-
Toujour le même problème.
le code est :char prenom, nom, avis [100]; scanf("%s",&prenom); printf("Entrez Votre nom : "); scanf("%s",&nom); printf("\nQu'elle votre reaction a propose de ce programme ? "); scanf("%s",&avis); Printf("\nMonsieur %s %s declare : %s ",nom, prenom, avis); system("PAUSE"); -
Tu ne dois pas seulement mettre char. En effet, un nom ou un prénom est rarement constitué d'une seule lettre. Tu dois donc utiliser un tableau de caractères. Par exemple : char[4] prenom = "Mary";
Le 4 représente la taille de ta chaine, mais tu peux réserver 10 caractères pour une chaîne n'étant formée que de 3 caractères. Attention si tu ne mets pas une taille assez grande, en cas de dépassement de ton tableau, ton programme va planter.
Et ensuite, il faudra remplacer tes %d en %s ;) -
tu as mis une majuscule à printf, il faut laisser en minuscule : réessaie
-
-
Sa marche .... presque ^^
maintenant je le lance je vais jusqu'au bout et au moment d'afficher le dernier printf il me met, projet1.exe a rencontré un problème et doit fermer : envoyer le rapport / ne pas envoyer.
Rha sa m'énerve -
t'as changé la majuscule en minuscule comme je te l'ai indiqu"?
reposte ton code, stp -
Le voici,
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int vie,joueur, ennemy; vie = 5; joueur = 5; ennemy = 5; printf("Il y a %d joueurs qui ont chacuns %d vies. \nIls doivent combatre %d ennemy ensemble.\n",vie, joueur, ennemy); printf("Entrer un Nombre :"); int mort =0; scanf("%d", &mort); int ennemy2, ennemy3; ennemy2 = ennemy - mort + joueur ; ennemy3 = ennemy2 + mort - ennemy ; printf ("Vous avez tuez %d ennemy, Mais %d arrive en plus. \nIl y a donc maintenant %d ennemy.\n",mort, ennemy3, ennemy2); printf("Entrez votre Prenom : "); char prenom, nom, avis [100]; scanf("%s",&prenom); printf("Entrez Votre nom : "); scanf("%s",&nom); printf("\nQu'elle votre reaction a propose de ce programme ? "); scanf("%s",&avis); printf("\nMonsieur %s %s declare : %s ",nom, prenom, avis); system("PAUSE"); return EXIT_SUCCESS; }
- 1
- 2