jQuery
En savoir plus
Adobe Flex & Flash
En savoir plus
ASP.NET
En savoir plus

Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !
Le problème de ce sujet a été résolu
| Page 1 2 3 4 5 Suivante | |
| Auteur | Message |
|---|---|
| 1 visiteur sur ce sujet (1 Anonyme) | |
| Page 1 2 3 4 5 Suivante | |
david55
|
# Posté le 13/08/2010 à 16:11:01 |
![]()
|
Bonjour à tous!
J'ouvre ce sujet afin que chacun d'entre vous nous montre comment reprogrammer une fonction de son choix en C ! Ceci pourrait être intéressant pour chacun d'entre nous et on pourrait en apprendre beaucoup sur les fonctions C. Alors à vos claviers et montrez nous comment programmer ces fameuses fonction comme printf, scanf, random, memset, malloc ... ou plus simplement les fonctions de la librairie string.h pour commencer PS: N'oubliez pas d'utiliser les balises code
Édité
le 16/08/2010 à 18:06:39
par david55
David 55 |
| Publicité | # Posté le 13/08/2010 à 16:11:01 |
|
|
|
uknow
|
# Posté le 13/08/2010 à 16:15:11 |
chercher est un art![]() |
Citation : david55
montrez nous comment programmer ces fameuses fonction comme printf, scanf, J'ai hate de voir ça ![]() Au passage, mets le titre de ton sujet en minuscule (le majuscule étant un peu mal vu).
Édité
le 13/08/2010 à 16:19:13
par uknow
Lecture et écriture dans fichiers en mode binaire. | Les pointeurs de fonctions. | Les tableaux et allocation dynamique. | Langage C pour les curieux (rédigé dans le champ "biographie"). L'électronique du zéro. (mise à jour - 17/04/2012). |
PierrickLibert
|
# Posté le 13/08/2010 à 16:16:28 |
![]()
Études : Epitech Nancy |
T'es un peu optimisme avec printf()... Vise déjà un peu plus bas pour commencer, genre les fonctions de string.h.
Surtout que printf() n'est vraiment pas a la portee de n'importe qui si tu veux le coder entierement... |
ZéroZéroHuit-008
|
# Posté le 13/08/2010 à 16:18:51 |
![]()
|
Encore printf ne doit pas être si difficile, en passant par l'intermédiaire de fgets (mais je ne me lancerai moi-même pas là-dedans
). Quant-à scanf...
|
david55
|
# Posté le 13/08/2010 à 16:19:18 |
![]()
|
Citation
T'es un peu optimisme avec printf()... Vise déjà un peu plus bas pour commencer, genre les fonctions de string.h. Surtout que printf() n'est vraiment pas a la portee de n'importe qui si tu veux le coder entierement... Justement ! On pourra peut être mieux comprendre comment elle fonctionne si quelqu'un sait la faire (en la commentant bien sur ;)). Sinon, vous pouvez commencer par la fonction que vous voulez
David 55 |
Fvirtman
|
# Posté le 13/08/2010 à 16:24:33 |
2012, l'année de mes 0x20 ans![]()
|
printf, techniquement, n'est pas difficile a programmer. C'est juste qu'elle est longue à programmer : il faut gérer tous les cas : tous les caractères d'échappement (avec \) ainsi que tous les types avec %
Recueil d'exemples de codes sur mon site |
PierrickLibert
|
# Posté le 13/08/2010 à 16:27:25 |
![]()
Études : Epitech Nancy |
Cette réponse a aidé l'auteur du sujetAprès c'était peut être du au contrainte de mon école (nous n'avons droit à aucune fonction système) mais j'en doute. Pour les téméraires qui veulent si oser, je pourrais vous aider jusqu'à un certain point, après faudrait que je me remette dessus. Mais un conseil, si vous voulez coder printf suivez ces etapes : 0) Lire le man, lire le man, lire le man, lire le man et pis le relire encore et encore. 1) Mise en place d'un parser très très très très solides et stables! 2) Commençez par des options simples tel que %s, %d, %f, ... 3) Découpez bien votre code sinon vous vous bloquerez tout seul. 4) Avant de commençer a vraiment rentrer dans les trucs difficiles, reposez chaque étape sur papier, c'est important. ... La suite, au premier qui en arrive déjà la.
|
david55
|
# Posté le 13/08/2010 à 16:29:04 |
![]()
|
Citation : Fvirtman
printf, techniquement, n'est pas difficile a programmer. C'est juste qu'elle est longue à programmer : il faut gérer tous les cas : tous les caractères d'échappement (avec \) ainsi que tous les types avec % Tu veux te lancer? Bien sur on ne te le demande pas en une soirée lol! Mais si tu veux ... propose nous quelque chose voir même un algorithme
David 55 |
uknow
|
# Posté le 13/08/2010 à 16:29:05 |
chercher est un art![]() |
Citation : ZéroZéroHuit-008
Encore printf ne doit pas être si difficile, en passant par l'intermédiaire de fgets (mais je ne me lancerai moi-même pas là-dedans ). Quant-à scanf... ![]() tu veux dire à l'aide de putc() ? Et tu semble oublier que printf est une fonction à nombre d'arguments variable. Lecture et écriture dans fichiers en mode binaire. | Les pointeurs de fonctions. | Les tableaux et allocation dynamique. | Langage C pour les curieux (rédigé dans le champ "biographie"). L'électronique du zéro. (mise à jour - 17/04/2012). |
Fvirtman
|
# Posté le 13/08/2010 à 16:33:27 |
2012, l'année de mes 0x20 ans![]()
|
Citation : david55
Citation : Fvirtman printf, techniquement, n'est pas difficile a programmer. C'est juste qu'elle est longue à programmer : il faut gérer tous les cas : tous les caractères d'échappement (avec \) ainsi que tous les types avec % Tu veux te lancer? Bien sur on ne te le demande pas en une soirée lol! Mais si tu veux ... propose nous quelque chose voir même un algorithme ![]() Je le ferais bien, mais plus tard peut être. La je suis au boulot pour encore 1 heure, j'ai des trucs bien plus compliqués à programmer avant ce soir.... Déjà que je ne suis pas sûr d'y arriver... Et j'ai tellement la cervelle en fusion que je viens faire du web quelques minutes avant de me replonger dedans... Recueil d'exemples de codes sur mon site |
Taurre
|
# Posté le 13/08/2010 à 16:37:58 |
![]()
Études : Université de Liege |
Citation : Fvirtman
printf, techniquement, n'est pas difficile a programmer. Même le format %a du C99? Je la trouve pas facile la conversion nombre décimal flottant -> nombre hexadécimal flottant...
Pour une coloration syntaxique du C à jour « In our experience, C has proven to be a pleasant, expressive, and versatile language for a wide variety of programs. It is easy to learn, and it wears well as one's experience with it grows ». (Brian W. Kernighan & Dennis M. Ritchie) |
david55
|
# Posté le 13/08/2010 à 16:38:57 |
![]()
|
Citation : Fvirtman
Je le ferais bien, mais plus tard peut être. La je suis au boulot pour encore 1 heure, j'ai des trucs bien plus compliqués à programmer avant ce soir.... Déjà que je ne suis pas sûr d'y arriver... Et j'ai tellement la cervelle en fusion que je viens faire du web quelques minutes avant de me replonger dedans... Ok alors tu le ferras quand tu auras le temps si tu ne change pas d'avis jusque là
Édité
le 13/08/2010 à 16:40:20
par david55
David 55 |
Fvirtman
|
# Posté le 13/08/2010 à 16:44:05 |
2012, l'année de mes 0x20 ans![]()
|
Citation : Taurre
Citation : Fvirtman printf, techniquement, n'est pas difficile a programmer. Même le format %a du C99? Je la trouve pas facile la conversion nombre décimal flottant -> nombre hexadécimal flottant... ![]() Après, il y aura peut être des options plus difficiles à programmer que d'autres. Je ne dis pas le contraire hein Mais bon, quand tu connais la formule c'est jouable
Recueil d'exemples de codes sur mon site |
PierrickLibert
|
# Posté le 13/08/2010 à 16:46:46 |
![]()
Études : Epitech Nancy |
Bien sur que c'est jouable, mais ca va prendre du temps ^^.
Si vous voulez je peux vous mettre tout ma lib C que j'ai refais pour recoder un shell. Mais je suis pas sur d'avoir tout fait comme les vrais fonctions C, j'ai un peu modifier a ma sauce et il y en a d'autre qui n'existe pas en C mais qui sont bien utile quand on manipule des tableaux, liste chaine, ...
|
david55
|
# Posté le 13/08/2010 à 16:48:27 |
![]()
|
Citation : PierrickLibert
Bien sur que c'est jouable, mais ca va prendre du temps ^^. Si vous voulez je peux vous mettre tout ma lib C que j'ai refais pour recoder un shell. Mais je suis pas sur d'avoir tout fait comme les vrais fonctions C, j'ai un peu modifier a ma sauce et il y en a d'autre qui n'existe pas en C mais qui sont bien utile quand on manipule des tableaux, liste chaine, ...Pourquoi pas !!! Je pense que ça pourrai nous intéresser
Édité
le 13/08/2010 à 17:10:11
par david55
David 55 |
Gwenn
|
# Posté le 13/08/2010 à 16:55:51 |
Chez moi ça marche.![]() Groupe : Anciens
|
|
david55
|
# Posté le 13/08/2010 à 17:00:33 |
![]()
|
Citation : Gwen-Haël
Sinon je vais dire une évidence mais la correction est facile à trouver puisque la libc est codée en C, vous pouvez trouver plusieurs implémentations différentes des fonctions standard en allant voir un peu partout. Ca peut être intéressant. Si tu nous trouves des liens pourquoi pas ... (le but est aussi qu'on se casse un peu la tête ;))
Édité
le 13/08/2010 à 17:01:03
par david55
David 55 |
Fvirtman
|
# Posté le 13/08/2010 à 17:03:12 |
2012, l'année de mes 0x20 ans![]()
|
A noter aussi qu'une fonction comme "printf" n'est pas toujours "bas niveau".
printf interprête une chaîne formatée et appelle une fonction en dessous qu'on appellera par exemple "putchar", qui met un caractère à l'écran. Ce sera donc long à programmer printf, mais en dessous, on aura un appel à une fonction plus bas niveau : putchar. Et selon les OS, putchar est codée différemment : - sous DOS, ou alors les vieux systèmes en mode texte en plein écran, putchar, c'était un appel a 2 instruction assembleur. Donc le bas niveau total ; en dessous c'est l'electronique. - sous Windows, Linux, ou autres systèmes graphiques, cette fonction putchar est complexe, puisque son rôle est d'afficher dans la fenêtre courante la lettre (avec la police et la taille qui va bien), donc ça peut être fort complexe en dessous ! En général, ce sera une sorte de "Blit". NB : arrêtez de confondre "ça" et "sa"... Oh les jeunes ! Vous la faîtes tous cette faute, elle est pénible ! Recueil d'exemples de codes sur mon site |
Gwenn
|
# Posté le 13/08/2010 à 17:20:46 |
Chez moi ça marche.![]() Groupe : Anciens
|
|
david55
|
# Posté le 13/08/2010 à 17:26:58 |
![]()
|
Citation : Gwen-Haël
@david55: http://ftp.gnu.org/gnu/glibc/, tout simplement? Merci beaucoup !
David 55 |
Marc Mongenet
|
# Posté le 13/08/2010 à 17:27:17 |
|
|
Cette réponse a aidé l'auteur du sujetsous Windows, Linux, ou autres systèmes graphiques, cette fonction putchar est complexe, puisque son rôle est d'afficher dans la fenêtre courante la lettre. Ca c'est bien en-dessous de putchar , dans le cas où stdout est une console sur le PC local. Car stdout finit fréquemment dans un pipe, un fichier, une connexion réseau, etc. D'où je conclus que les fonctions standard d'entrée-sortie de C appellent forcément des fonctions système, puisque les flux d'entrée-sortie sont des abstractions.
Édité
le 13/08/2010 à 17:28:55
par Marc Mongenet
|
Fvirtman
|
# Posté le 13/08/2010 à 17:28:21 |
2012, l'année de mes 0x20 ans![]()
|
|
david55
|
# Posté le 13/08/2010 à 17:38:54 |
![]()
|
Bon j'ajoute un lien dans lequel vous trouverez tous les corps des fonctions C:
cliquez ici Cependant, nous attendons toujours votre versions
Édité
le 16/08/2010 à 13:34:17
par david55
David 55 |
ZéroZéroHuit-008
|
# Posté le 13/08/2010 à 17:48:01 |
![]()
|
Citation : uknow
Citation : ZéroZéroHuit-008 Encore printf ne doit pas être si difficile, en passant par l'intermédiaire de fgets (mais je ne me lancerai moi-même pas là-dedans ). Quant-à scanf... ![]() tu veux dire à l'aide de putc() ? Et tu semble oublier que printf est une fonction à nombre d'arguments variable. Oui, c'est bien de putc dont je voulais parler (je sors tout juste d'un combat avec fgets, je l'avait encore en tête...). Quand au nombre d'arguments variables, je ne l'ai pas oublié mais ce n'est pas extrêmement compliqué à gérer. |
FyndWyre
|
# Posté le 13/08/2010 à 18:20:54 |
![]() Groupe : Bannis
|
david55, ton lien ne marche plus !
![]() ![]() ![]() ![]() Absent en semaine ! |
Etienne
|
# Posté le 13/08/2010 à 18:33:57 |
Have you mooed today ?![]() Groupe : Anciens
|
Citation : Manuel
7.19.6.3 The printf function Synopsis #include <stdio.h> int printf(const char * restrict format, ...); Description The printf function is equivalent to fprintf with the argument stdout interposed before the arguments to printf. Returns The printf function returns the number of characters transmitted, or a negative value if an output or encoding error occurred Moi ça ne m'aide pas beaucoup. Mais quand ils disent similaire à fprintf(), ça veut dire que printf() se sert des fichiers ? |
ZéroZéroHuit-008
|
# Posté le 13/08/2010 à 18:59:30 |
![]()
|
Non, je crois qu'il disent que c'est la même fonction sauf pour le flux de sortie : fprintf écris dans un fichier donné alors que printf utilise stdout.
|
Pouet_forever
|
# Posté le 13/08/2010 à 19:38:13 |
Trance forever :)![]()
|
Citation : Norme
The printf function is equivalent to fprintf with the argument stdout interposed before the arguments to printf.
![]() ![]() La musique du moment : Marcel Woods - Advanced (Tiësto remix) [Le préprocesseur C] Fan officiel de Tiësto ! |
HighTam
|
# Posté le 13/08/2010 à 20:22:48 |
Sleep(FOR_EVER);![]()
Ville : Sfax |
|
Pouet_forever
|
# Posté le 13/08/2010 à 21:22:44 |
Trance forever :)![]()
|
Pas indiqué.
![]() ![]() La musique du moment : Marcel Woods - Advanced (Tiësto remix) [Le préprocesseur C] Fan officiel de Tiësto ! |
Retour au forum "Langage C" ou à la liste des forums
