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
- Problème avec printf ^^
- Undefined reference to printf ✓ - Forum Programmation
- Printf et type de variables ✓ - Forum C
- [Langage C] printf pour un double - Forum C
- Différences printf/puts/write en C - Forum C
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.
à 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/
ce sont des chaines de caractères et non des int, tu les déclares comme cela :
char nom,prenom [20],
char avis [15];
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 questionint 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
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)
Comment on détect les variable en chaine de caractere ?
char nom, prenom, avis ?
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?
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
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 :)
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
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");
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 ;)
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
#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
%d c'est pour les doubles...
Non, c'est pour les int ;-))).