Read,fread et getchar
Résolu/Fermé
chaimae97
Messages postés
39
Date d'inscription
jeudi 16 novembre 2017
Statut
Membre
Dernière intervention
13 mars 2019
-
6 avril 2018 à 23:18
chaimae97 Messages postés 39 Date d'inscription jeudi 16 novembre 2017 Statut Membre Dernière intervention 13 mars 2019 - 22 avril 2018 à 16:40
chaimae97 Messages postés 39 Date d'inscription jeudi 16 novembre 2017 Statut Membre Dernière intervention 13 mars 2019 - 22 avril 2018 à 16:40
A voir également:
- Read,fread et getchar
- My read manga ✓ - Forum Google Chrome
- A disk read error occurred - Forum Matériel & Système
- L'état de la memoire ne peut pas etre read - Forum Windows 10
- Access violation at address 00000 read of address 00000 ✓ - Forum Logiciels
- You don't have permission to access this resource.server unable to read htaccess file, denying access to be safe ✓ - Forum Debian
1 réponse
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
8 avril 2018 à 12:40
8 avril 2018 à 12:40
Bonjour,
Quand une touche est appuyée, le driver transmet le caractère à la console qui va le conserver en attendant qu'une application l'a lui demande. La console doit impérativement disposer d'un buffer pour gérer cela.
Du côté de l'application on peut utiliser read() qui dialoguera directement avec ce buffer pour y lire un caractère après l'autre (ce qui nécessite de nombreux échanges entre les applications). L'application peut utiliser un système bufferisé comme fread() getchar() scanf() fgetc(), lors des échanges avec la console il peut alors y avoir plus de caractères transmis qu'attendus, ils sont conservés du côté de l'application et une lecture ultérieure n'aura pas à demander à la console.
Dans tous les cas il y un buffer minimum, celui de la console. Sinon il y a deux buffers un du côté de l'application, l'autre du côté de la console.
Quand une touche est appuyée, le driver transmet le caractère à la console qui va le conserver en attendant qu'une application l'a lui demande. La console doit impérativement disposer d'un buffer pour gérer cela.
Du côté de l'application on peut utiliser read() qui dialoguera directement avec ce buffer pour y lire un caractère après l'autre (ce qui nécessite de nombreux échanges entre les applications). L'application peut utiliser un système bufferisé comme fread() getchar() scanf() fgetc(), lors des échanges avec la console il peut alors y avoir plus de caractères transmis qu'attendus, ils sont conservés du côté de l'application et une lecture ultérieure n'aura pas à demander à la console.
Dans tous les cas il y un buffer minimum, celui de la console. Sinon il y a deux buffers un du côté de l'application, l'autre du côté de la console.
8 avril 2018 à 13:40
Merci pour votre aide
8 avril 2018 à 16:11
Si on utilise pour lire un seul caractère, il perd du temps à interpréter ses paramètres supplémentaires et devrait être légèrement plus lent que . Mais je suis très étonné que l'écart soit visible. Les 2 codes sont-ils en mode release?
Si par contre on veut parfois lire des séquences de plusieurs caractères, il y aura plus d'appel à qu'à , et là utiliser sera surement plus rapide.
22 avril 2018 à 16:40
moi je travaille dans linux et je développe à l'aide de 'gedit'