IO 7.15 作业

 fun.h

 #ifndef __FUN_H__                                       
 #define __FUN_H__                                       
 #include <stdio.h>                                       
 #include <stdio.h>                                       
 #include <string.h>                                      
 #include <unistd.h>                                      
 #include <stdlib.h>                                      
 #include <sys/types.h>                                   
 #include <sys/stat.h>                                    
 #include <fcntl.h>                                       
 #include <pthread.h>                                     
 #include <semaphore.h>                                   
 #include <wait.h>                                        
 #include <signal.h>                                      
 #include <sys/socket.h>                                  
 #include <arpa/inet.h>                                   
 #include <sys/socket.h>                                  
 #include <sys/ipc.h>                                     
 #include <sys/sem.h>                                     
 #include <semaphore.h>                                   
 #include <sys/msg.h>                                     
 #include <sys/shm.h>                                     
 #include <sys/un.h>                                      
 typedef struct sockaddr_in addr_in_t;                    
 typedef struct sockaddr addr_t;                          
 typedef struct sockaddr_un addr_un_t;                    
                                                          
                                                          
 //定义学生结构体                                         
 typedef struct student                                   
 {                                                        
     char name[33];                                       
     int ID;                                              
     int high;                                            
     int heavy;                                           
     int score;                                           
 }stu,*stu_ptr;                                           
 //定义链表结构体                                         
 typedef struct node                                      
 {                                                        
     union                                                
     {                                                    
         //len表示学生的个数                              
         int len;                                         
         //学生的数据                                     
         stu data;                                        
     };                                                   
     struct node *next;                                   
 }linklsit,*linklsit_ptr;                                 
                                                          
                                                          
 //1.创建链表                                             
 linklsit_ptr create_node();                              
 //2.链表判空                                             
 int empty(linklsit_ptr H);                               
 //3.申请节点封装数据并进行头插                           
 linklsit_ptr create_students_node(linklsit_ptr H,stu e); 
 //4.遍历                                                 
 void output(linklsit_ptr H);                             
 //5.头删                                                 
 int head_del(linklsit_ptr H);                            
 //6.释放链表                                             
 void my_free(linklsit_ptr H);                            
 #endif 

fun.c

#include "fun.h"                                                                                                              
                                                                                                                               
//1.创建链表                                                                                                                   
linklsit_ptr create_node()                                                                                                     
{                                                                                                                              
    //申请节点大小空间                                                                                                         
    linklsit_ptr H=(linklsit_ptr)malloc(sizeof(linklsit));                                                                     
    if(NULL==H)                                                                                                                
    {                                                                                                                          
        printf("创建链表失败\n");                                                                                              
        return NULL;                                                                                                           
    }                                                                                                                          
    H->len=0;                                                                                                                  
    H->next=NULL;                                                                                                              
    printf("链表创建成功\n");                                                                                                  
    return H;                                                                                                                  
}                                                                                                                              
//2.链表判空                                                                                                                   
int empty(linklsit_ptr H)                                                                                                      
{                                                                                                                              
    if(NULL==H)                                                                                                                
    {                                                                                                                          
        printf("判断为空失败\n");                                                                                              
        return -1;                                                                                                             
    }                                                                                                                          
    return H->len==0;                                                                                                          
}                                                                                                                              
//3.申请节点封装数据并进行头插                                                                                                 
linklsit_ptr create_students_node(linklsit_ptr H,stu e)                                                                        
{                                                                                                                              
    //申请节点大小空间                                                                                                         
    linklsit_ptr P=(linklsit_ptr)malloc(sizeof(linklsit));                                                                     
    if(NULL==P)                                                                                                                
    {                                                                                                                          
        printf("申请节点失败\n");                                                                                              
        return NULL;                                                                                                           
    }                                                                                                                          
    P->data=e;                                                                                                                 
    P->next=NULL;                                                                                                              
    //定义移动的指针                                                                                                           
    linklsit_ptr q=H;                                                                                                          
        P->next=q->next;                                                                                                       
        q->next=P;                                                                                                             
        H->len++;                                                                                                              
    return H;                                                                                                                  
}                                                                                                                              
//4.遍历                                                                                                                       
void output(linklsit_ptr H)                                                                                                    
{                                                                                                                              
    if(NULL==H || empty(H))                                                                                                    
    {                                                                                                                          
        printf("遍历失败\n");                                                                                                  
        return;                                                                                                                
    }                                                                                                                          
    linklsit_ptr p=H;                                                                                                          
    while(p->next!=NULL)                                                                                                       
    {                                                                                                                          
        p=p->next;                                                                                                             
        printf("姓名:%s ID:%d 身高:%d 体重:%d 得分:%d\n",p->data.name,p->data.ID,p->data.high,p->data.heavy,p->data.score);    
    }                                                                                                                          
    printf("------------------------\n");                                                                                      
}                                                                                                                              
//5.头删                                                                                                                       
int head_del(linklsit_ptr H)                                                                                                   
{                                                                                                                              
//判断所接受的链表是否合法                                                                                                     
//判空                                                                                                                         
if(NULL == H || empty(H))                                                                                                      
{                                                                                                                              
    printf("删除失败!\n");                                                                                                    
    return 0;                                                                                                                  
}                                                                                                                              
                                                                                                                               
//定义一个指针指向头结点后的第一个节点                                                                                         
linklsit_ptr q = H->next;                                                                                                      
//删除                                                                                                                         
 H->next = q->next; //H->next = H->next->next;                                                                                 
                                                                                                                               
//释放空间                                                                                                                     
free(q);                                                                                                                       
q=NULL; //避免野指针                                                                                                           
                                                                                                                               
//成功删除 链表长度自减                                                                                                        
H->len--;                                                                                                                      
 return 1;                                                                                                                     
 }                                                                                                                             
//6.释放链表                                                                                                                   
void my_free(linklsit_ptr H)                                                                                                   
{                                                                                                                              
    if(NULL == H || empty(H))                                                                                                  
    {                                                                                                                          
        printf("释放失败!\n");                                                                                                
        return ;                                                                                                               
    }                                                                                                                          
    while(H->next!=NULL)                                                                                                       
    {                                                                                                                          
        head_del(H);                                                                                                           
    }                                                                                                                          
    H=NULL;                                                                                                                    
    printf("释放成功\n");                                                                                                      
}   

main.c

#include "fun.h"
int main(int argc, const char *argv[])
{
 
    //学生结构体赋值
    stu a={"yvhuai",1000,180,120,99};
    stu b={"fanqihang",1001,178,120,88};
    stu c={"xuchongxin",1002,188,160,77};
    stu d={"lihaoran",1003,182,160,66};
    stu e={"chenkanghe",1004,178,120,99};
    //创建链表
    linklsit_ptr H=create_node();
    //将数据插入链表
    create_students_node(H,a);
    create_students_node(H,b);
    create_students_node(H,c);
    create_students_node(H,d);
    create_students_node(H,e);
    //遍历
    output(H);
 
    //使用fprinf和fscanf函数将链表中的5个学生的信息保存到文件中去,删除其中的信息,然后读取文件中的数据再次显现文件中的信息
 
    //(1)保存数据到文件中
        FILE *wfp=fopen(argv[1],"w");
        if(wfp==NULL)
        {
            perror("fopen");
            return 1;
        }
        linklsit_ptr p=H->next;
        while(p!=NULL)
        {
            fprintf(wfp,"%s %d %d %d %d\n",p->data.name,p->data.ID,p->data.high,p->data.heavy,p->data.score);
            p=p->next;
        }
        fclose(wfp);
    //(2)清空链表
        my_free(H);
    //(3)读取文件内容
        FILE *rfp=fopen(argv[1],"r");
        if(rfp==NULL)
        {
            perror("fopen");
            return 1;
        }
 
        stu s[5];
        for(int i=0;i<5;i++)
        {
            fscanf(rfp,"%s %d %d %d %d\n",s[i].name,&s[i].ID,&s[i].high,&s[i].heavy,&s[i].score);
            if(feof(rfp)==1)
            {
                break;
            }
        }
 
    //显示
        for(int i=0;i<5;i++)
        {
            printf("姓名:%s\n",s[i].name);
            printf("ID:%d\n",s[i].ID);
            printf("身高:%d\n",s[i].high);
            printf("体重:%d\n",s[i].heavy);
            printf("得分:%d\n",s[i].score);
            printf("---------\n");
        }
        fclose(rfp);
    return 0;
} 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Camunda是一个开源的工作流引擎,可以用于管理和执行各种类型的业务流程。作为全球范围内广泛使用的工作流引擎,Camunda非常重视其国际化和本地化的能力。为了满足中国用户的需求,Camunda团队已经开始进行Camunda 7.15的汉化工作。 Camunda 7.15汉化的目标是提供一个完全汉化的用户界面,使中国用户能够更轻松地使用和管理Camunda工作流引擎。这意味着所有的菜单、标签、按钮等用户界面元素都将以中文显示。此外,Camunda还将提供中文的文档、教程和示例,以帮助中国用户更好地理解和使用Camunda。 为了实现这个目标,Camunda团队正在进行大量的翻译工作。他们正在对Camunda的用户界面进行全面的翻译,包括对各个菜单和标签进行翻译,确保所有的界面元素可以用中文正确显示。此外,他们还在翻译文档、教程和示例,以便中国用户能够更好地理解Camunda的功能和用法。 值得一提的是,Camunda 7.15汉化工作并不仅仅是简单的翻译工作。团队还在努力确保汉化后的用户界面和功能都能够符合中国用户的需求和习惯。他们将在翻译过程中参考中国用户的反馈和建议,以确保汉化后的Camunda工作流引擎能够更好地适应中国用户的使用习惯。 总之,Camunda团队正在积极致力于Camunda 7.15的汉化工作,旨在为中国用户提供一个更友好和便捷的工作流引擎。希望通过这一汉化工作,能够促进Camunda在中国的应用和推广,为中国用户提供更好的工作流管理和执行体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值