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 :

Fonction Write n'écrit pas


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Par défaut Fonction Write n'écrit pas
    Bonjour à tous,

    Je dois optimisez un programme en C. Mon programme s'exécute sous unix sous la forme suivante:
    ./monprogramme < fichierEntree > fichierSortie

    Exemple de fichier d'entrée:
    10
    25
    100
    0

    Exemple de fichier de sortie:
    1
    4
    16

    J'ai choisi de lire le fichier avec la fonction fgets et d'écrire avec la fonction write (je suis obligé d'écrire avec la fonction write).

    Attention les fichiers d'entrée et sortie étant insérés comme des flux, il n'y a donc pas d'ouverture de fichier.

    Lecture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while (n != 0)
    	{
    		fgets(line, sizeof line, stdin); // lecture de toute un ligne 
    		sscanf(line, "%d", &n); // on stock la ligne dans un entier
    		if (n == 0) break; // Sortir sans faire le calcul pour n = 0  
     
    		clean(line); // On vide le buffer de fgets 
    		Cal(); 
    	};
    Après vérification la variable n se remplit correctement.

    Dans la fonction Cal se trouve un entier que j'aimerais écrire.

    Ecriture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int tri;
               // calcul de tri
               write(1, &tri, sizeof tri);
    En revanche, aucune écriture ne se réalise.

    Merci infiniment, je n'ai plus d'idée, j'ai l'impression d'avoir tout essayé...

  2. #2
    Membre émérite
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Par défaut
    Je n'utilise pas trop write, mais j'ai trouvé ce lien.
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

  3. #3
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 190
    Par défaut
    peux-tu tester la valeur de retour de write
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int w;
    w=write(1, &tri, sizeof tri);
    printf("write->%d, addr(tri)=%p, size=%d\n", w, &tri, sizeof tri);
    A+

  4. #4
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Par défaut
    Voici la valeur write :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    write->4, addr(tri)=0xbffff68c, size=4
    J'ai appliqué la solution du lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char tmp[12]={0x0};
    	sprintf(tmp,"%d", tri);
    	write(1, tmp, sizeof(tmp));
    Le résultat semble correct, mais je dois encore faire des tests si vraiment toutes les variables sont bonnes.

    Je vous tiens informé de mon avancement. Merci beaucoup pour ces réponses si rapide.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/12/2010, 23h07
  2. fonction plpgsql qui fonctionne pas...
    Par Empty_body dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/01/2006, 18h22
  3. Jascript fonction sous IE mais pas sous Netscape ou FF
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 29/12/2005, 17h02
  4. La fonction CurrentDb() ne fonctionne pas dans une requête
    Par Sébastien Le Goyet dans le forum Access
    Réponses: 8
    Dernier message: 24/11/2005, 17h46
  5. [Forum] Fonction mail() ne marche pas chez OVH ?
    Par quanou dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 08/11/2005, 13h11

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