Problème programme C
MartinLabrosse
Messages postés
237
Date d'inscription
Statut
Membre
Dernière intervention
-
MartinLabrosse Messages postés 237 Date d'inscription Statut Membre Dernière intervention -
MartinLabrosse Messages postés 237 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde, je suis débutant dans la programmation et je voulais crée un p'tit programme en console qui demande le nom puis après tu tapes le nom et il te dit...
"Tu t'appelle". Puis le nom tapé... Mais y donne le nombre 0... Voici ma source:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char nom = 0;
printf("Ton nom ?\n");
scanf("%d", &nom);
printf("Tu t'appelles %d", nom);
return 0;
}
Please, help me !
"Tu t'appelle". Puis le nom tapé... Mais y donne le nombre 0... Voici ma source:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char nom = 0;
printf("Ton nom ?\n");
scanf("%d", &nom);
printf("Tu t'appelles %d", nom);
return 0;
}
Please, help me !
A voir également:
- Problème programme C
- Programme demarrage windows - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
13 réponses
Salut,
je t'invite à aller lire cet article : http://www.siteduzero.com/tutoriel-3-35363-realiser-des-saisies-securisees-grace-a-fgets.html ,qui répondra à tes questions sur la saisie en C (même celle que tu ne te poses pas encore).
je t'invite à aller lire cet article : http://www.siteduzero.com/tutoriel-3-35363-realiser-des-saisies-securisees-grace-a-fgets.html ,qui répondra à tes questions sur la saisie en C (même celle que tu ne te poses pas encore).
Tiens,
#include <stdio.h> int main() { char nom[20]; printf("Ton nom ?\n"); scanf("%s", nom); printf("Tu t'appelles %s", nom); return 0; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je sais pas comment le compilateur a pû compiler ton code.
Car son premier programme ne contient pas d'erreurs, juste un warning dû au cast non implicite du int vers le char.
Car son premier programme ne contient pas d'erreurs, juste un warning dû au cast non implicite du int vers le char.
C'est exact j'avais lu en diagonal le message d'erreur ;-) , je me demandais aussi ... . Merci pour la correction.
Salut...
Tout d'abord merci pour votre aide mais le code marche pas tout à fait, en fait si je tape Martin... Ca marche mais dès que je met un espace, ben il m'affiche pas après l'espace... Please... Help me...
Tout d'abord merci pour votre aide mais le code marche pas tout à fait, en fait si je tape Martin... Ca marche mais dès que je met un espace, ben il m'affiche pas après l'espace... Please... Help me...
Ca marche mais dès que je met un espace, ben il m'affiche pas après l'espace.
C'est tout à fait normal. C'est le comportement par défaut du scanf avec le format %s.
Si tu souhaites récupérer au-delà de l'espace, je te conseille d'utiliser la fonction fgets dont voici un exemple :
Si tu as des questions sur la compréhension du code, n'hésite pas.
Cdlt,
C'est tout à fait normal. C'est le comportement par défaut du scanf avec le format %s.
Si tu souhaites récupérer au-delà de l'espace, je te conseille d'utiliser la fonction fgets dont voici un exemple :
#include <stdio.h> #include <stdlib.h> #include <string.h> static void traiteChaine(char const *chaine) { char *p=strchr(chaine, '\n'); if (p == NULL) { int c; while ((c=getchar()) != '\n' && c != EOF); } else *p=0; } int main(void) { char chaine[256]; printf("entre ta phrase (max %u caractères) : ", sizeof chaine - 1); if (fgets(chaine, sizeof chaine, stdin) == NULL) { fputs("erreur de saisie\n",stderr); return EXIT_FAILURE; } traiteChaine(chaine); printf("tu as entré la chaîne : %s\n", chaine); return 0; }
Si tu as des questions sur la compréhension du code, n'hésite pas.
Cdlt,
Ca marche mais c'est un peu compliqué, j'suis carrément débutant moi...
Y'a pas plus simple avec scanf ?
Y'a pas plus simple avec scanf ?
Je t'ai gardé que le fonctionnel dans mon programme. Il se simplifie donc très nettement. Ce qui le rendait "compliqué" c'est tous les opérations de contrôles. Pourtant elles sont indispensables.
Voici donc le code simplifié :
Si tu souhaites avec un scanf :
Cdlt,
Voici donc le code simplifié :
#include <stdio.h> int main(void) { char chaine[256]; printf("entre ta chaîne :\n"); fgets(chaine, sizeof chaine, stdin); printf("tu as entré la chaîne : %s\n", chaine); return 0; }
Si tu souhaites avec un scanf :
#include <stdio.h> int main(void) { char chaine[256]; printf("entre ta chaîne :\n"); scanf("%[^\n]",chaine); printf("tu as entré la chaîne : %s\n", chaine); return 0; }
Cdlt,
Salut, dsl mais j'ai essayé de faire une condition et ça marche pas...
Tu peux m'aider stp ?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char nom [256];
printf("Nom ?:\n");
scanf("%[^\n]", nom);
if (nom = "Martin")
{
printf("Martin !!!");
}
else
{
printf("Qui t'es ?");
}
return 0;
}
Tu peux m'aider stp ?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char nom [256];
printf("Nom ?:\n");
scanf("%[^\n]", nom);
if (nom = "Martin")
{
printf("Martin !!!");
}
else
{
printf("Qui t'es ?");
}
return 0;
}
En C, pour comparer ce n'est pas l'opérateur = mais l'opérateur == (double égal).
Mais faire nom == "Martin" n'a aucun sens car tu vas comparer les adresses des pointeurs et non les valeurs des tableaux.
Pour comparer deux chaînes de caractères, il te faut utiliser la fonction strcmp.
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/strcmp.3.html
Cdlt,
Mais faire nom == "Martin" n'a aucun sens car tu vas comparer les adresses des pointeurs et non les valeurs des tableaux.
Pour comparer deux chaînes de caractères, il te faut utiliser la fonction strcmp.
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/strcmp.3.html
Cdlt,