为了账号安全,请及时绑定邮箱和手机立即绑定

作业社区

探索学习新天地,共享知识资源!

0 提交作业
0 布置作业
0 满分作业
得分 100
学习任务

Hee_cryLQ0 的学生作业:

seqlist.h #ifndef __SEQLIST__ #define __SEQLIST__ #include #include #include #define MAX 5 typedef struct student { char name[20]; int id; int age; }datatype_t; typedef struct { datatype_t buf[MAX]; //buf[10]:顺序表中有10个学生 int n; }seqlist_t; seqlist_t *create_empty_seqlist(); int is_full_seqlist(seqlist_t *list); void insert_data_seqlist(seqlist_t *list, datatype_t data); void printf_data_seqlist(seqlist_t *list); int is_empty_seqlist(seqlist_t *list); int delete_data_seqlist(seqlist_t *list,datatype_t data); #endif //__SEQLIST__ seqlist.c #include "seqlist.h" /*创建一个空的顺序表*/ seqlist_t *create_empty_seqlist() { seqlist_t *list = NULL; //list本身是局部变量 list = (seqlist_t *)malloc(sizeof(seqlist_t));//而list保存的地址在堆区 if(NULL == list) { printf("malloc seqlist failed!\n"); return NULL; } memset(list, 0, sizeof(seqlist_t)); list->n = 0; return list; } /*检查顺序表是否已经存满数据MAX=10*/ int is_full_seqlist(seqlist_t *list) { return list->n == MAX ? 1 : 0; } /*向顺序表中插入学生信息,传入学生对象data*/ void insert_data_seqlist(seqlist_t *list, datatype_t data) { strcpy(list->buf[list->n].name, data.name);//数组名是数组首地址,不能对数组名进行=赋值,所以需要使用strcpy list->buf[list->n].id = data.id; list->buf[list->n].age = data.age; list->n = list->n + 1; //list->n++; return ; } /*打印顺序表中的学生信息*/ void printf_data_seqlist(seqlist_t *list) { printf("name\tid\tage\n"); for(int i = 0; i < list->n; i++) { printf("%s\t%d\t%d\n",list->buf[i].name, list->buf[i].id, list->buf[i].age); } return ; } int is_empty_seqlist(seqlist_t *list) { return list->n == 0 ? 1 : 0; } int delete_data_seqlist(seqlist_t *list ,datatype_t data) { int i = 0, j = 0; if(is_empty_seqlist(list)) { printf("seqlist is empty!\n"); return -1; } //删除指定id的学生信息 for(i = 0; i < list->n; i++) { if(list->buf[i].id != data.id) { list->buf[j] = list->buf[i];//把没有被删除的学生信息赋值给buf[j],则buf[j]为删除后的表的元素,j为新的表的大小 j++; } } //更新顺序表大小 list->n = j; //判断删除数据是否存在 if(i == j) //执行上面程序后i依然等于j,说明没有元素被删除 { printf("要删除的数据不存在\n"); return -2; } else { printf("被删除的学生ID为:%d\n", data.id); } return 0; } main.c #include "seqlist.h" int main() { seqlist_t *list = NULL; list = create_empty_seqlist();//创建一个空表 datatype_t data; //创建学生对象 printf("请输入学生的信息,最多输入%d个。\n", MAX); while(!is_full_seqlist(list)) { scanf("%s%d%d", data.name, &data.id, &data.age); insert_data_seqlist(list, data); } printf_data_seqlist(list); printf("请输入要删除的学生id :\n"); scanf("%d",&data.id); int ret = delete_data_seqlist(list, data); if(ret < 0) { printf("要删除的顺序表为空,或要删除的信息不存在\n"); return -1; } printf_data_seqlist(list); free(list); list = NULL; return 0; }

得分 100
学习任务

史啦啦 的学生作业:

【图片】 #include #include #include #include #include #include #include #include #include #include #include #include #define BACKLOG 10 void do_sigchild(int sig) { wait(NULL); } void *do_process_client(void *arg) { ssize_t rbytes = 0,sbytes = 0; char buffer[1024] = {0}; int cfd = *(int *)arg; for(;;) { rbytes = recv(cfd,buffer,sizeof(buffer),0); if(rbytes == -1) { perror("[ERROR] Failed to recv."); pthread_exit(NULL); } else if(rbytes > 0) { sbytes = send(cfd,buffer,strlen(buffer),0); if(sbytes == -1) { perror("[ERROR] Failed to recv"); pthread_exit(NULL); } } else if(rbytes == 0) { printf("The client has been shutdown.\n"); break; } } close(cfd); return 0; } int main(int argc,char *argv[]) { int sfd,ret,cfd; struct sockaddr_in svr_addr,cli_addr; pthread_t tid; socklen_t len = sizeof(struct sockaddr_in); if(argc != 3) { fprintf(stderr,"Usage : %s .\n",argv[0]); exit(EXIT_FAILURE); } __sighandler_t sigret; sigret = signal(SIGCHLD,do_sigchild); if(sigret == SIG_ERR) { perror("[ERROR] Failed to signal."); exit(EXIT_FAILURE); } //创建套接字 sfd = socket(AF_INET,SOCK_STREAM,0); if(sfd == -1) { perror("[ERROR] Failed to socket."); exit(EXIT_FAILURE); } bzero(&svr_addr,sizeof(struct sockaddr_in)); svr_addr.sin_family = AF_INET; svr_addr.sin_port = htons(atoi(argv[2])); svr_addr.sin_addr.s_addr = inet_addr(argv[1]); //绑定ip地址和端口号 ret = bind(sfd,(const struct sockaddr *)&svr_addr,sizeof(struct sockaddr)); if(ret == -1) { perror("[ERROR] Failed to bind"); exit(EXIT_FAILURE); } ret = listen(sfd,BACKLOG); if(ret == -1) { perror("[ERROR] Failed to listen"); exit(EXIT_FAILURE); } for(;;) { cfd = accept(sfd,(struct sockaddr *)&cli_addr,&len); if(cfd == -1) { perror("[ERROR] Failed to accept."); exit(EXIT_FAILURE); } printf("ip : %s port : %d\n",inet_ntoa(cli_addr.sin_addr),ntohs(cli_addr.sin_port)); ret = pthread_create(&tid,NULL,do_process_client,(void *)&cfd); if(ret != 0) { fprintf(stderr,"pthread_create(): %s\n",strerror(ret)); exit(EXIT_FAILURE); } pthread_detach(tid); } close(sfd); return 0; }

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号