Как получить десять очередей сообщений и распечатать их в обратном порядке? - PullRequest
0 голосов
/ 31 октября 2019

Основная задача - написать две программы: первая отправит десять сообщений, а вторая, в зависимости от параметра вызова, получит их в том же или в обратном порядке, в зависимости от выбора пользователя.

Iесть две рабочие программы: одна отправляет 10 слов по очереди, другая получает и выводит. Проблема в том, что я не знаю, как заставить вторую программу отображать эти слова в обратном порядке (начиная с последнего) - мне нужно сделать выбор для пользователя, в каком порядке он хочет!

//Program for receive messages :

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

 struct msgbuf {
 long type;
 char mtext[1000];
 };

 void receive_message(int mqid,int argum)
 {
         int j=0;
 struct msgbuf buffer;

 for(int i = 0;i<10;i++){

 if(msgrcv(mqid,&buffer,sizeof(buffer.mtext),1,0)<0){
 perror("msgrcv");
 } else{

 printf("Received message [%d] : %s\n",i,buffer.mtext);

 }
 }
 }


 int main(int argc,char *argv[])
 {
 int key = ftok("ed",8);
 if(key<0)
 perror("ftok");

 int id = msgget(key,0600|IPC_CREAT|IPC_EXCL);
 if(id<0)
 perror("msgget");
 receive_message(id,argc);

 if(msgctl(id,IPC_RMID,0)<0)
 perror("msgctl");

 return 0;
 }

//Program for send messages

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

 #define TEXT_LENGTH 1000

 struct msgbuf {
 long type;
 char mtext[TEXT_LENGTH];
 };

 void send_message(int mqid)
 {
 struct msgbuf buffer;
int y;
 buffer.type = 1;

char message[100];

 for(int i = 0;i<10;i++){

puts("Enter word : ");
scanf("%s",&message);

memset(buffer.mtext,0,sizeof(buffer.mtext));
 strncpy(buffer.mtext,message,TEXT_LENGTH-1);

 if(msgsnd(mqid,&buffer,sizeof(buffer.mtext),0)<0)
 perror("msgsnd");
 }
 }

 int main(void) {
 int key = ftok("ed",8);
 if(key<0)
 perror("ftok");

 int id = msgget(key,0600);
 if(id<0)
 perror("msgget");

 send_message(id);

 return 0;
 }

нет ошибок;программа просто отображает 10 слов, которые я ввожу

1 Ответ

0 голосов
/ 15 ноября 2019

продолжайте добавлять к хвосту связанного списка и затем отображать с головы до хвоста, если вы хотите развернуться

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...