IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

difficulte avec la fonction write


Sujet :

C

  1. #1
    Membre éclairé Avatar de labarre2002
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 237
    Par défaut difficulte avec la fonction write
    Bonjour


    Je debute en C ,je suis autodidacte


    je dois realiser une fonction qui affiche l alphabet sur une une seule ligne dans l ordre croissant a partir de la lettre 'a'

    prototypee de la facon suivante:


    void ft_print_alphabet (void);


    voici mon code :


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #include  <unistd.h>
    #include  <stdio.h>
     
    void  ft_print_alphabet (void);
     
    void   ft_print_alphabet (void)
    {
    write  (1,&c,26);
    }
     
    int main ()
     
    {
    char c='a';
     
    printf ("Les lettres: \n");
    for(c='a';<='y');c++)
    {
     printf ("%c",c);
     
    }
     
     
     
    return 0;
     
    }

    je suis un peu perdu pourrais des idees pour faire focntionner ma fonction ?

    Merci

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    Tout d’abord encadre ton code source avec les balises «*code*» ( l’icône #).

    Regarde les parenthèses de ta boucle for :


  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 145
    Billets dans le blog
    4
    Par défaut
    Ce code ne compile pas.
    c n'est pas déclaré dans ft_print_alphabet
    ta boucle for est mal écrite, la condition est à moitié manquante, il manque la post condition et y'a une parenthèse en trop
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Membre éclairé Avatar de labarre2002
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 237
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Bonjour.

    Tout d’abord encadre ton code source avec les balises «*code*» ( l’icône #).

    Regarde les parenthèses de ta boucle for :


    Merci gerald3d la parenthese dans la boucle est une erreur commise en saisissant sur ce forum

  5. #5
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    Relis bien l’énoncé de ton exercice, c'est la fonction ft_print_alphabet qui doit écrire l'alphabet.
    Il faut aussi savoir, si tu veux utiliser printf ou write pour écrire les lettres ? (tu peux aussi utiliser la fonction putchar.
    En passant la dernière lettre de l'alphabet c'est le z pas le y .
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par labarre2002 Voir le message
    je dois realiser une fonction qui affiche l alphabet sur une une seule ligne dans l ordre croissant a partir de la lettre 'a'

    prototypee de la facon suivante:

    void ft_print_alphabet (void);
    Donc c'est la fonction ft_print_alphabet() qui affiche l'alphabet, et pas la fonction main(). C'est pas grave en soi (dans les deux cas l'alphabet est affiché) mais apprendre un langage c'est d'abord suivre les consignes. Ici c'est pour t'apprendre à découper les tâches et les dédier à des fonctions.


    Citation Envoyé par labarre2002 Voir le message
    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void   ft_print_alphabet (void)
    {
    write  (1,&c,26);
    }
    D'où sort cette variable "c" ???
    Il faut revoir le principe des fonctions. Si celles-ci ont besoin d'une information venue de l'extérieur (ie l'appelant) alors cette information leur est transmise via les paramètres.
    Et pourquoi afficher les 26 cases suivant cette adresse? Tu penses que si la case "c" en mémoire contient une lettre de l'alphabet les 25 cases suivantes contiennent automatiquement les autres lettres? Il n'y a rien d'automatique en programmation (et surtout en C).
    La fonction devant afficher l'alphabet, doit d'abord récupérer cet alphabet à afficher en le prenant effectivement dans le caractère 'a' et suivants.

    Et évidemment écrire du C c'est d'abord écrire un code qui compile, c'est à dire un code sans erreur de syntaxe et tu n'es pas censé avoir besoin de venir sur un forum pour ça.

    Citation Envoyé par labarre2002 Voir le message
    la parenthese dans la boucle est une erreur commise en saisissant sur ce forum

    Pas difficile de prendre son code dans son éditeur, de le copier et venir le coller dans le forum. Ca évite justement ces erreurs idiotes...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 753
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void DisplayAlphabet(void) {
        write(1,"abcdefghijklmnopqrstuvwxyz",26);
    }
    Ça ne fait pas l'affaire ?

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par edgarjacobs Voir le message
    Ça ne fait pas l'affaire ?
    Ben... à mon avis cet exercice est fait pour s'habituer aux boucles, au fait que 'a'+1 donne 'b', au fait que si tu as une variable contenant la lettre tu dois passer l'adresse de cette variable à la fonction write() etc. Ta solution donne un résultat à l'écran correspondant à ce qui doit apparaitre au final mais fout en l'air tout le côté "apprentissage" de toutes ces notions...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 160
    Par défaut
    Et je n'utiliserais pas la fonction write, qui est une fonction système et qui sert surtout à écrire dans un fichier (dans ce cas de figure, le descripteur de fichier 1 représente stdout - càd par défaut la console).

    printf ou éventuellement putchar suffit.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    C'est parce que tu n'es pas un épitarque.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 160
    Par défaut
    C'est parce que tu n'est pas un épitarque.
    toi-même.

    Ca veut dire quoi épitarque ? Jamais entendu.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  12. #12
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Ca veut dire quoi épitarque ? Jamais entendu.
    C'est un peu genre épithète et attribut.
    Exemple: hier il a plu sur l'attribut épithète que demain il fera beau. Et mieux vaut épitarque jamais.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 145
    Billets dans le blog
    4
    Par défaut
    Étudiant d'Epita, d'où sort probablement l'énoncé qui revient régulièrement sur ce forum.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  14. #14
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Ca veut dire quoi épitarque ? Jamais entendu.
    Je suis pratiquement le seul qui utilise ce terme. Il est basé sur le mot Énarque (diplômé de l'ENA) et il signifie:
    Citation Envoyé par Bousk Voir le message
    Étudiant d'Epita, d'où sort probablement l'énoncé qui revient régulièrement sur ce forum.
    ÉPITA est connue pour ordonner à ses étudiants de première année de coder en réinventant la LibC, se basant uniquement sur les appels système *n*x (donc, réimplémenter putchar() en utilisant write(), etc. -- Un signe caractéristique qui permet d'identifier leur code au premier coup d’œil)

    Ce qui m'agace c'est qu'en même temps ils ne leur apprennent pas à éviter les nombres magiques, résultat on voit tous ces write(1, ...) au lieu de write(STDOUT_FILENO, ...)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] difficulté avec la fonction surf ou surfc
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 3
    Dernier message: 20/04/2010, 14h16
  2. difficultés avec une fonction variadique
    Par minibus dans le forum Débuter
    Réponses: 1
    Dernier message: 24/07/2009, 14h02
  3. Difficulté avec la fonction OU
    Par bolide7 dans le forum Excel
    Réponses: 2
    Dernier message: 14/07/2008, 21h06
  4. Réponses: 4
    Dernier message: 18/12/2006, 21h43
  5. php5: difficulté avec la fonction header
    Par koueletbak dans le forum Langage
    Réponses: 2
    Dernier message: 02/05/2006, 19h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo