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