Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programme qui ne compile ni s'exécute

probleme de l'excution de mon programme

    23 juin 2018 à 0:17:11

    bonjour a touts dzl de vous déranger une autre foit je suis vraiment débutent en programmation et sont votre aide je ne peux pas se sortire tout seul merci d’avance

    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <sys/wait.h>
    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/msg.h>
    #define CLE 314
     
     struct requete {
    long letype;
    char film;
    int date;
    pid_t mon_pid;
    };
     
     struct reponse {
    long letype;
    int reponse;
    };
     
    int main()
    {
    int msqid, l, film, date;
    struct requete la_requete;
    struct reponse la_reponse;
     
    /* récupération du msqid */
    if((msqid=msgget((key_t)CLE,0))<0)
    {
    perror("msgget");
    exit(1);
    }
     
    /* préparation de la requête et envoi */
     
    printf ("Nom du film, date :");
    scanf ("%d %d", &film, &date);
    la_requete.letype = 1;
    la_requete.date = date;
    la_requete.film = film;
    la_requete.mon_pid = getpid();
     
    if(msgsnd(msqid,&la_requete,sizeof(struct requete)-4,0)==-1)
    {
    perror("msgsnd");
    exit(2);
    }
     
    /* réception de la réponse */
    if((l=msgrcv(msqid,&la_reponse,sizeof(struct reponse)-4,getpid(),0)==-1))
    {
    perror("msgrcv");
    exit(2);
    }
     
    printf ("le resultat reçu est:%d",la_reponse.reponse);
    
    exit(0);
    }

    apres que j'ai compiler

    avec g++ nonfichier.c++ -o nonficher

    jai fait cette commende pour l'executé

    ./nonficher

    voila le resulta

    et quand je fait

    -
    Edité par AbcAbc6 24 juin 2018 à 0:05:55

    • Partager sur Facebook
    • Partager sur Twitter
      23 juin 2018 à 0:24:01

      Bonjour,

      Mauvais titre

      Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

      Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

      De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

      Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

      Pour modifier votre titre, éditez le premier message de votre sujet.

      (titre originel : programme c++)

      -
      Edité par AbcAbc6 23 juin 2018 à 0:24:34

      • Partager sur Facebook
      • Partager sur Twitter
        23 juin 2018 à 23:20:02

        problème de compilation et exécution de programme
        • Partager sur Facebook
        • Partager sur Twitter
          24 juin 2018 à 0:12:20

          Ton programme se compile très bien. Et l'erreur d'exécution vient de la fonction msgget que tu utilises probablement mal. Je te conseille de lire une documentation sur le sujet.

          • Partager sur Facebook
          • Partager sur Twitter
            24 juin 2018 à 2:37:51

            Salut,

            Quelques remarques en passant, même si elles ne t'aideront pas à corriger ton problème, elle ne te feront pas de mal :D

            1- Le code que tu nous présente est du C et non du C++... Il faudrait demander au staff de le déplacer ;)

            2- Evites les impressions écrans pour montrer ton code ou le résutat que tu obtiens...

            Surtout quand tu es sous linux: tu peux très facilement sélectionner une partie du texte de ta ligne de commande et en faire un copier / coller (la copie se fait grace à un clique droit sur la console->copier) en utilisant le bouton destiné au code (sélectionne "Bash (shell).

            Cela fonctionne tout aussi bien ;)

            3- penses à indenter ton code: chaque fois que tu ouvre une accolade, tu décales les lignes qui précèdent l'accolade fermante d'un "certain nombre d'espaces" vers la droite.  Cela le rendra beaucoup plus lisible

            5- Nous ne sommes plus au temps où le moindre byte coutait un demi bras:  Prend l'habitude de respecter cette règle simple : une instruction (ou déclaration de variable) == une ligne.

            Cela rendra aussi le code plus lisible

            6- une fonction de près de 40 lignes est souvent déjà une fonction qui en fait trop.  La preuve nous est données par les commentaires que tu t'es senti obligé de rajouter pour déterminer les étapes suivi par ta fonction main:

            Tu as déterminé trois étapes (même quatre si on compte bien):

            • obtention du msqid
            • préparation de la requête et
            • envoi
            • réception de la réponse

            Chacune de ces étapes mériterait d'être traitée par une fonction séparée ;)

            7- ne fait jamais confiance à une donnée qui vient de l'extérieur:

            Assures toi toujours que, non seulement, la donnée que tu obtiens est de la bonne taille, mais, aussi (et surtout) qu'elle respecte le format qu'elle est sensé avoir ;)

            • Partager sur Facebook
            • Partager sur Twitter
            Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
              24 juin 2018 à 4:13:50

              koala01 a écrit:

              1- Le code que tu nous présente est du C et non du C++... Il faudrait demander au staff de le déplacer ;)

              OK je déplace dans le forum C.

              • Partager sur Facebook
              • Partager sur Twitter

              Programme qui ne compile ni s'exécute

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown