Problème en C
Résolu/Fermé
martur
-
11 déc. 2010 à 23:12
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 11 déc. 2010 à 23:51
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 11 déc. 2010 à 23:51
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
11 déc. 2010 à 23:29
11 déc. 2010 à 23:29
Bonjour,
Lorsque tu tapes un caractère et que tu valides par entrée, tu as l'impression d'avoir tapé un caractère, mais tu en as tapé en fait deux. Le second correspond au code de la touche entrée ('\n'). C'est ce dernier qui te fait sauter les cases du tableau.
Pour corriger, il suffit d'insérer un simple getchar(); après le scanf("%c",&t[i]);
D'ailleurs plutôt qu'un scanf("%c",&t[i]); t'aurais pu mettre t[i]=getchar();
Sinon pour information, tu peux mettre directement scanf("%19s",t); au lieu de mettre une boucle for / scanf.
Cdlt,
Lorsque tu tapes un caractère et que tu valides par entrée, tu as l'impression d'avoir tapé un caractère, mais tu en as tapé en fait deux. Le second correspond au code de la touche entrée ('\n'). C'est ce dernier qui te fait sauter les cases du tableau.
Pour corriger, il suffit d'insérer un simple getchar(); après le scanf("%c",&t[i]);
D'ailleurs plutôt qu'un scanf("%c",&t[i]); t'aurais pu mettre t[i]=getchar();
Sinon pour information, tu peux mettre directement scanf("%19s",t); au lieu de mettre une boucle for / scanf.
Cdlt,
redaTDI
Messages postés
30
Date d'inscription
samedi 2 octobre 2010
Statut
Membre
Dernière intervention
9 novembre 2012
3
11 déc. 2010 à 23:45
11 déc. 2010 à 23:45
et aussi il est mieux d 'utilisé la fonction gets(t) pour lire la chaine à la place de scanf. cette fonction est utilitaire au tableau de chaine de caractere...
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
Modifié par fiddy le 12/12/2010 à 00:02
Modifié par fiddy le 12/12/2010 à 00:02
aussi il est mieux d 'utilisé la fonction gets(t) pour lire la chaine à la place de scanf
Certainement pas. gets() est obsolète car non sécurisé.
Il vaut mieux utiliser fgets qui permet d'indiquer la taille de la chaîne maximum, ce qui évite la réécriture de la pile.
Certainement pas. gets() est obsolète car non sécurisé.
Il vaut mieux utiliser fgets qui permet d'indiquer la taille de la chaîne maximum, ce qui évite la réécriture de la pile.
11 déc. 2010 à 23:40