Avatar billede dragnor Juniormester
02. februar 2004 - 15:24 Der er 4 kommentarer og
1 løsning

hjælp til program, syntax problem

I den sidste del af koden, har jeg udkommenteret noget kode, koden virker, men som i nok kan se, så skal man taste noget som så sendes tilbage. Det som jeg ønsker er at istedet for at taste en tekst, så vil jeg gerne forud deffinere hvad den skal sende tilbage, men hvordan gør jeg det?


#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

#define MAX_TEXT 512

struct my_msg_st {
    long int my_msg_type;
    char some_text[BUFSIZ];

};

int main()
{
    int running = 1;
    int msgid, msgid2, msgid3;
    struct my_msg_st some_data;
    long int msg_to_receive = 0;
    char buffer[BUFSIZ];

/* First, we set up the message queue. */

    msgid = msgget((key_t)1, 0666 | IPC_CREAT);
    msgid2 = msgget((key_t)2, 0666 | IPC_CREAT);
    msgid3 = msgget((key_t)3, 0666 | IPC_CREAT);

    if (msgid == -1) {
        fprintf(stderr, "msgget failed with error: %d\n", errno);
        exit(EXIT_FAILURE);
    }

/* Then the messages are retrieved from the queue, until an end message is encountered.
Lastly, the message queue is deleted. */

    while(running) {
        if (msgrcv(msgid, (void *)&some_data, BUFSIZ,
                  msg_to_receive, 0) == -1) {
            fprintf(stderr, "msgrcv failed with error: %d\n", errno);
            exit(EXIT_FAILURE);
        }
        printf("You wrote: %s", some_data.some_text);
        if (strncmp(some_data.some_text, "end", 3) == 0) {
            running = 0;
        }
 
        //printf("Enter some text: ");
        //fgets(buffer, BUFSIZ, stdin);
    buffer = 1;
        some_data.my_msg_type = 1;
        strcpy(some_data.some_text, buffer);

        if (msgsnd(msgid, (void *)&some_data, MAX_TEXT, 0) == -1) {
            fprintf(stderr, "msgsnd failed\n");
            exit(EXIT_FAILURE);
        }
        if (strncmp(buffer, "end", 3) == 0) {
            running = 0;
        }
   
  }
   

    exit(EXIT_SUCCESS);
}
Avatar billede dragnor Juniormester
02. februar 2004 - 15:25 #1
ups! der hvor der står buffer = 1; den del skal selvfølgelig ikke være der!
Avatar billede arne_v Ekspert
02. februar 2004 - 16:29 #2
erstat printf og fgets med:

strcpy(buffer,"Dette er en test !");

måske ?
Avatar billede dragnor Juniormester
03. februar 2004 - 12:43 #3
Ja, tak!
Avatar billede dragnor Juniormester
05. februar 2004 - 12:44 #4
vil du have dine point eller? TIL ARNE V
Avatar billede arne_v Ekspert
05. februar 2004 - 14:49 #5
ja tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester