Problème programme C
Fermé
MartinLabrosse
Messages postés
237
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
19 janvier 2021
-
2 avril 2010 à 17:41
MartinLabrosse Messages postés 237 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 19 janvier 2021 - 6 avril 2010 à 16:07
MartinLabrosse Messages postés 237 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 19 janvier 2021 - 6 avril 2010 à 16:07
A voir également:
- Problème programme C
- Programme demarrage windows 10 - Guide
- Mettre en veille un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Désinstaller programme windows 10 - Guide
- Sms programmé - Guide
13 réponses
miramaze
Messages postés
1429
Date d'inscription
mercredi 29 juillet 2009
Statut
Contributeur
Dernière intervention
1 mai 2022
92
2 avril 2010 à 18:04
2 avril 2010 à 18:04
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).
MartinLabrosse
Messages postés
237
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
19 janvier 2021
29
2 avril 2010 à 21:00
2 avril 2010 à 21:00
C'est là que j'apprend mais ça résout pas mon problème. Qui peut corriger mon code svp ?
miramaze
Messages postés
1429
Date d'inscription
mercredi 29 juillet 2009
Statut
Contributeur
Dernière intervention
1 mai 2022
92
2 avril 2010 à 21:06
2 avril 2010 à 21:06
Tiens,
#include <stdio.h> int main() { char nom[20]; printf("Ton nom ?\n"); scanf("%s", nom); printf("Tu t'appelles %s", nom); return 0; }
miramaze
Messages postés
1429
Date d'inscription
mercredi 29 juillet 2009
Statut
Contributeur
Dernière intervention
1 mai 2022
92
Modifié par miramaze le 2/04/2010 à 21:10
Modifié par miramaze le 2/04/2010 à 21:10
Je sais pas comment le compilateur a pû compiler ton code.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
2 avril 2010 à 22:04
2 avril 2010 à 22:04
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.
miramaze
Messages postés
1429
Date d'inscription
mercredi 29 juillet 2009
Statut
Contributeur
Dernière intervention
1 mai 2022
92
2 avril 2010 à 22:11
2 avril 2010 à 22:11
C'est exact j'avais lu en diagonal le message d'erreur ;-) , je me demandais aussi ... . Merci pour la correction.
MartinLabrosse
Messages postés
237
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
19 janvier 2021
29
3 avril 2010 à 12:38
3 avril 2010 à 12:38
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...
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
3 avril 2010 à 14:48
3 avril 2010 à 14:48
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,
MartinLabrosse
Messages postés
237
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
19 janvier 2021
29
3 avril 2010 à 15:06
3 avril 2010 à 15:06
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 ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
3 avril 2010 à 15:15
3 avril 2010 à 15:15
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,
MartinLabrosse
Messages postés
237
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
19 janvier 2021
29
3 avril 2010 à 16:08
3 avril 2010 à 16:08
Merci, c'est exactement ça que je cherchais !!!!
Je vous remercie et place ce sujet en Résolut.
Je vous remercie et place ce sujet en Résolut.
MartinLabrosse
Messages postés
237
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
19 janvier 2021
29
3 avril 2010 à 17:03
3 avril 2010 à 17:03
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;
}
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
3 avril 2010 à 17:41
3 avril 2010 à 17:41
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,
MartinLabrosse
Messages postés
237
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
19 janvier 2021
29
6 avril 2010 à 16:07
6 avril 2010 à 16:07
Eh donc, ça doit comment je peux corriger mon code stp.
Je suis un vrai débutant... ^^
Je suis un vrai débutant... ^^
MartinLabrosse
Messages postés
237
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
19 janvier 2021
29
6 avril 2010 à 16:07
6 avril 2010 à 16:07
Eh donc, ça doit comment je peux corriger mon code stp.
Je suis un vrai débutant... ^^
Je suis un vrai débutant... ^^
miramaze
Messages postés
1429
Date d'inscription
mercredi 29 juillet 2009
Statut
Contributeur
Dernière intervention
1 mai 2022
92
Modifié par miramaze le 4/04/2010 à 16:10
Modifié par miramaze le 4/04/2010 à 16:10
C'est d'ailleurs pour ça que je t'avais mis la page si tu l'avais lu... Ils expliquent tout ces problèmes de saisie, je n'ai fais que corriger à la va-vite.