Que des fonctions C/C++ : - Perdue entre 2 fonctions

Bonjour tout le monde,
Y a t il quelqu’un qui peut m’éclaircir quelle est la différence exacte, s’il y a lieu, entre la fonction getch() et la fonction getchar().
Certes toutes les 2 permettent la saisie clavier d’un caractère alphanumérique et que la saisie s’arrête une fois le caractère est frappé.
[color=blue]getch() appartient à conio.h
getchar() appartient à stdio.h
[/color]
Mais est ce qu’il y a une différence bien apparente dans leur utilisation :neutre: ?
Merci :super:

getch() n’est qu’une fonction haut niveau de getchar, cette fonction initialise le terminal, le sélectionne et utilise getchar.

Merci mais c’est toujours un peu flou
:pt1cable: Me proposeriez vous donc de n’utiliser, dans un premier temps au moins, que la fonction getchar ?
a+

getchar(), car stdio.h (donc à priori standard)

Ensuite, pour la différence, non je ne peux pas dire mieux. me sert jamais de getch()

Bé tout dépend de ce que tu comptes faire, perso, getch() me sert à quitter une boucle alors que j’utilise plutôt getchar() pour savoir quelle touche à été saisie, par simple convention/cohérence.

Merci d’avoir partager votre logique d’utilisation avec moi, elle semble conventionnelle comme vous dites… je ferais pareil…
a++ :super:

Je profite de ce topic pour noter qqch que je trouve tout aussi bizarre que tes getch et getchar: il existe au total 3 strcat possible pour un programme C++!

StrCat
lstrcat
strcat

Et il n’y a pas de doublon ce sont bien des fonctions qui utilisent un code différent! C’est ce que j’appelle surcharger un OS. La seul chose que j’ai compris c’est que strcat fait partie de la norme ANSI du C, c’est une librairie de base.

Mais les deux autres font parties aussi bien l’une que l’autre de l’OS à proprement parlé. On peut se demander parfois si un peu de ménage ferait du bien à l’OS. Mais supprimer une fonction c’est enlever toute la compatibilité qui existent avec les anciens programmes…

StrCat et lstrcat : purement microsoft
strcat : ANSI, fait partis de la libc et fonctionne partout, même sur Amiga.

Bilou aime bien mettre du code à double dans son OS. C’est pour le vendre deux fois plus cher :paf: ?

J’ai beau lire la doc de ces deux fonctions MS elle ne diffèrent sur aucun point…

Avec Visual Studio 2005, il y a une troisième couche dite "plus sécurisée" où il faut ajouter "_s" à la fin de la fonction (strcpy_s) :whistle:

Alors à ce moment j’ajouterais strncat qui semble faire la même chose que strcat_s (elle prend la taille du buffer de destination pour empêcher les buffers overflow) :whistle:

non, ce n’est pas la même chose : strncat fait partis de la libc au même titre que strcat, strcat_s ne fait partis que des outils microsoft, on ne peut pas les comparer bien que la finalité soit la même.

Oui en effet mais pourquoi implémenter une fonction deux fois? (même si c’est dans deux librairies différentes).

Selon la doc de Microsoft la différence serait que strcat_s fais une batterie de test en plus avec les outils Microsoft (pour vérifier si le pointeur donné est valide par exemple).

Oui, c’est bien ça, les outils (compilateur en fait) font une batterie de tests pour vérifier qu’aucun débordement existe ou peut être créé, ce ne sont donc que des fonctions microsoftiennes.
Pourquoi il y a plusieurs variantes d’une même fonction ? Je pense que c’est juste pour la rétrocompatibilité, je ne vois pas d’autres raisons :neutre:
Par contre, perso, je typedeferais les anciennes fonctions vers les nouvelles, comme ça, les nouvelles fonctions seront utilisées de manières transparente mais bon, ça ne les a pas trop effleuré chez Redmond :sarcastic:

Pour une fonction aussi petite que strcat le faite d’appeler une nouvelle fonction fait sans doute perdre de la rapidité pour pas grand chose. Quand on sait que strcat est des fois appelées des dizaines de fois (centaines?) ça peut faire perdre un peu en rapidité peut-être…

Enfin bon, les CPU sont tellement puissants. Un simple empilage/dépilage ne devrait pas tuer un Pentium (et même un Céléron :paf: !)

C’est pas la fonction la plus lente quand même, puis je pense qu’il doit y avoir différentes implémentations de cette fonction utilisant le mmx, sse …