Différence entre getchar et fread

Résolu/Fermé
chaimae97 Messages postés 39 Date d'inscription jeudi 16 novembre 2017 Statut Membre Dernière intervention 13 mars 2019 - 2 avril 2018 à 23:35
chaimae97 Messages postés 39 Date d'inscription jeudi 16 novembre 2017 Statut Membre Dernière intervention 13 mars 2019 - 5 avril 2018 à 20:31
Bonjour,
Svp , concernant la différence entre getchar et fread, le prof nous a dit que :
getchar : a plus d'accés aux fichiers à distance
fread : cherche juste dans le même répertoire
et c'est pour ces raisons getchar et plus rapide que fread
mais j'ai pas compris ces différences !
Pouvez-vous m'éclaircir les choses ?
Mercii d'avance



1 réponse

Utilisateur anonyme
5 avril 2018 à 15:10
Ce n'est pas ce que j'ai compris avec la documentation officielle.

getchar :

int getchar ( void );

Get character from stdin
Returns the next character from the standard input (stdin).

It is equivalent to calling getc with stdin as argument.


Source : getchar sur C++

fread :

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

Read block of data from stream
Reads an array of count elements, each one with a size of size bytes, from the stream and stores them in the block of memory specified by ptr.

The position indicator of the stream is advanced by the total amount of bytes read.

The total amount of bytes read if successful is (size*count).


Source : fread sur C++

De ce que j'ai compris :

getchar permet de récupérer une entrée spécifique (un caractère) sur une entrée spécifique (stdin soit la console).

fread permet de récupérer une entrée variable (bloc de donnée dont la taille est paramétrable) sur une entrée quelconque (stream signifie flux donc en particulier, stdin devrait fonctionner mais applicable pour un fichier).

Ainsi, getchar est plus rapide que fread car c'est sortir l'artillerie lourde que d'utiliser fread à la place de getchar.
1
chaimae97 Messages postés 39 Date d'inscription jeudi 16 novembre 2017 Statut Membre Dernière intervention 13 mars 2019
5 avril 2018 à 16:52
Merci beaucoup pour votre réponse
Mais j'ai pas compris ce que vous voudriez dire par votre dernière phrase, pourquoi getchar est plus rapide
0
Utilisateur anonyme
5 avril 2018 à 20:14
fread peut être utilisé à la place de getchar. Pour ça il faut considérer des blocs de données de la taille d'un caractère, une entrée particulière : stdin alors que la fonction fread a été conçues pour gérer des blocs de données plus gros, des flux plus contraignants (fichier, buffer).

C'est comme si tu voulais remplir un verre d'eau avec un arrosoir. ça marche, mais c'est pas efficace.

Dans la mesure du possible dans le domaine de la programmation, il faut utiliser les fonctions existantes qui se rapproche le plus du besoin. Si tu veux récupérer un caractère de l'utilisateur sur la console : getchar fait l'affaire. Si tu veux lire un fichier qui contient des structures sous la forme d'un code byte : fread.

Tu peux tout faire avec tout mais c'est plus dur dans certains sens et parfois pas optimisé.
0
chaimae97 Messages postés 39 Date d'inscription jeudi 16 novembre 2017 Statut Membre Dernière intervention 13 mars 2019
5 avril 2018 à 20:31
Merci pour la réponse et merci pour votre exemple
0