Je me demande si on peut faire un programme en C sans inclure aucune bibliothèque et si oui alors comment on peut afficher un texte dans l'écran ou saisir un texte au clavier ??
Je me demande si on peut faire un programme en C sans inclure aucune bibliothèque et si oui alors comment on peut afficher un texte dans l'écran ou saisir un texte au clavier ??
Oui. Mais, l'inclusion des ces fichiers .h permettant au programme de connaître l'interface avec des librairies, on aura des erreurs de compilation s'il l'on veut utiliser des fonctions de librairies. Ainsi, si l'on ne met pasJe me demande si on peut faire un programme en C sans inclure aucune bibliothèque
alors on va avoir une erreur lorsque l'on va utiliser la fonction printf. Un programme en langage ne pouvant pas faire grand chose sans libraire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include<stdio.h>
Ai-je correctement répondu à cette question quelque peu matinale ?
je sais bien l'utilité des bibliotheque mais je me demande comment créer une fonction assez simple comme scanf() ou printf() sans inclure stdio.h bien sure ou aucune autre bibliotheque.
heuh....
tu peux aussi t'inspirer des travaux des Guru fprintf par exemple...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 // prototype void myScanf(...); void myPrintf(...); int main() { // appels des fonctions return(0); } void myScanf() { // definir son comportement } void myPrintf(); { // definir son comportement }
Attention toute fois au autres includes qui sont appelés.
bonne chance pour la réinvention de la roue![]()
Bonjour,
Pour compléter les réponses de Bayard et bi_turbo, tu peux dans un premier temps écrire un programme qui n'utilise aucune bibliothèque ni référence à des fichiers externes, simplement en renvoyant un code de retour :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int main (void) { return 42; }
Ce programme retournera donc cette valeur comme code de fin de programme à ton système d'exploitation, que tu pourras alors évaluer avec $? sous un Shell Unix, ERROR_LEVEL sous D.O.S. ou avec l'appel système approprié si tu programmes en C et que tu lances ton processus depuis un autre. C'est une forme de communication. Tu remarqueras que ce programme n'inclut aucun header et qu'il compilera quand même en mode strict, avec tous les avertissements activés.
Maintenant, pour approfondir ta question, « printf » n'est pas un mot-clé réservé du C. En désactivant toutes les options implicites (bien utiles quand on débute en C) et en retirant toutes les directives #include, ton compilateur finira par te dire « moi, printf(), 'connais pas. ». Par contre, c'est une fonction qui fait partie de la norme C, c'est-à-dire du minimum syndical qui doit être livré avec un compilateur, ce qui la rend portable, et te garantit qu'elle sera implémentée de la même façon partout. Avec un seul bémol tout de même : il faut que ce soit « possible ». Si c'est un micro-contrôleur que tu programmes en C, qu'il fonctionne en embarqué et qu'il n'est équipé d'aucun périphérique d'affichage, ou de sortie en général, alors printf() n'a pas de raison d'être et ne pourra pas être implémenté. Il se peut qu'elle le soit quand même, mais elle se contentera de revenir au programme principal sans renvoyer de code d'erreur.
À présent, pour en venir au fait, si tu veux réécrire printf() à partir de zéro, il te faudra communiquer avec ton système d'exploitation. Donc, il faudra utiliser les appels système plutôt que les fonctions standard. En descendant un peu plus loin, si tu n'utilises pas les headers prédéfinis par ton O.S. pour utiliser ses appels système, il va falloir écrire un bout d'assembleur pour faire l'appel.
Enfin, si tu te places au niveau du système d'exploitation lui-même et que tu veux savoir comment on écrit simplement un message à l'écran quand RIEN n'est chargé, et que le BIOS n'est pas disponible, et bien on dépose des valeurs en mémoire. Donc, depuis le C, ça revient à utiliser un pointeur vers la mémoire vidéo et à allumer un à un les pixels qui nous intéressent (ou directement les caractères si tu travailles en mode texte). Pour cela, il existe le forum « Assembleur → Programmation d'O.S » mais, à ce stade, ce n'est plus du C et cela demande d'avoir déjà l'expérience de la programmation.
Bon courage.
Sous windows, les "syscall" sont des fonctions prefixe par NT, tu trouvera les prototypes dans winternl.h et les fonctions dans ntdll.dll
Je ne vois pas pourquoi tu refuses les header pour prototyper les fonctions.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager