gpt4 book ai didi

c - 如何接收十个消息队列并倒序打印?

转载 作者:行者123 更新时间:2023-11-30 16:11:19 25 4
gpt4 key购买 nike

主要任务 - 编写两个程序:第一个将发送十条消息,第二个将根据调用参数发送 -根据用户的选择,其他人将以相同或相反的顺序接收它们。

我有两个工作程序:一个依次发送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 个单词

最佳答案

继续添加到链表的尾部,如果要反转,则从头到尾显示

关于c - 如何接收十个消息队列并倒序打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58644939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com