linux参数的配置,文件的读写

来源:互联网 发布:网络主播放的歌曲 编辑:程序博客网 时间:2024/06/02 03:45

把相关参数进行配置时,很多需要写到文件里面保存

下面是一个代码,保存之。

 

#include <stdio.h>
#include <stdlib.h>

#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>

//灯数据结构体
struct _Lamp_Info
{
 int number;
 int color;
 int size;
};
typedef struct _Lamp_Info Lamp_Info;

 //灯数据节点
struct LampNode
{
 Lamp_Info lamp_info;
 struct LampNode *next;
};

//数据存储列表
struct ListData
{
 int ListNumber;
 struct LampNode *head;
 struct LampNode *tail;
};

//数据存储列表定义
struct ListData List_Data_Table;

//数据存储列表初始化
int initListData()
{
 List_Data_Table.ListNumber = 0;
 List_Data_Table.head = NULL;
 List_Data_Table.tail = NULL;
 return 0;
}

//添加数据
int Add_List_info(struct LampNode *pLampNode)
{
 if( pLampNode == NULL )
 {
  return -1;
 }

 if( List_Data_Table.head == NULL )
 {
  List_Data_Table.head = pLampNode;
  List_Data_Table.tail = pLampNode;
  pLampNode->next = NULL;
  List_Data_Table.ListNumber++;
 }
 else
 {
  pLampNode->next = NULL;
  List_Data_Table.tail->next = pLampNode;
  List_Data_Table.tail = List_Data_Table.tail->next;
  List_Data_Table.ListNumber++;
 }
 return 1;
}

//写入数据*****************************take care
int Save_Data_ToDisk(char *save_file_name)
{
 int fd = 0;
 int res= 0;

 struct LampNode *p_tempNode = NULL;

 fd = open(save_file_name, O_CREAT|O_RDWR);
    if(fd < 0)
    {
  printf("Lamp.dat failed !\n");
  return -1;
    }
 for( p_tempNode=List_Data_Table.head; p_tempNode!=NULL; p_tempNode=p_tempNode->next)
 {
  res = write(fd, &p_tempNode->lamp_info, sizeof(Lamp_Info));
  if(res<0)
  {
   return -1;
  } 
 } 
}
//读出数据*************************
int Read_Data_FromDisk(char *read_file_name)
{
 int fd = 0;
 int res = 0;

 Lamp_Info temp_lamp_info;
 struct LampNode * p_tempNode = NULL;
 
    fd = open(read_file_name,O_RDWR);
    if(fd < 0)
    {
         printf("open Lamp.dat failed !\n");
   return -1;
    }

 while(1)
 {
  memset((unsigned char*)&temp_lamp_info,0,sizeof(Lamp_Info));
  res = read(fd, (unsigned char *)&temp_lamp_info, sizeof(Lamp_Info));
  if( res < sizeof(Lamp_Info))
  {
   break;
  }
  p_tempNode = malloc(sizeof(struct LampNode));
  memcpy((unsigned char *)&p_tempNode, (unsigned char *)&temp_lamp_info,sizeof(Lamp_Info));
  //Add_List_info(p_tempNode);
  printf("%d\n",temp_lamp_info.number);
 }
}
//节点创造,准备添加
int CreateNode(Lamp_Info *plamp_info)
{
 struct LampNode *tempNode = NULL;
 tempNode = malloc(sizeof(struct LampNode));
 memcpy((unsigned char*)&tempNode, (unsigned char*)&plamp_info, sizeof(Lamp_Info));
 tempNode->next = NULL;

 Add_List_info(tempNode);
}
//lamp数据获得,get_lamp_info
Lamp_Info get_lamp_info(int number, int color, int size)
{
 Lamp_Info temp_lamp_info;printf("aaaaaa1\n");
 memset((unsigned char*)&temp_lamp_info,0,sizeof(Lamp_Info));printf("aaaaaa2\n");
 temp_lamp_info.number = number;printf("aaaaaa3\n");
 temp_lamp_info.color  = color;printf("aaaaaa4\n");
 temp_lamp_info.size   = size;printf("aaaaaa5\n");

 return temp_lamp_info;
}

int main()
{
 char save_name_org[] ="./Lamp.dat";
 Lamp_Info temp_lamp_info = get_lamp_info(1,1,1);
printf("%d,%d,%d\n",temp_lamp_info.number,temp_lamp_info.color,temp_lamp_info.size);
CreateNode(&temp_lamp_info);printf("aaaaaa\n");
//CreateNode(get_lamp_info(2,2,2));
//CreateNode(get_lamp_info(3,3,3));
Save_Data_ToDisk(save_name_org);
Read_Data_FromDisk(save_name_org);

}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 企业被列入经营税务异常名录怎么办 手机号被别人绑定了企业微信怎么办 刚出生一天的婴儿不肯吃奶怎么办 9个月孩子不好好吃奶怎么办 孩子2个月吃奶老是呛到怎么办 孩子4个月不好好吃奶怎么办? 3个月的孩子不吃奶肚子胀怎么办 刚出生的婴儿吃完奶打嗝怎么办 宝宝刚生下来一直睡觉不吃奶怎么办 刚生下来的婴儿不吃奶怎么办 刚生下来的小猫不吃奶怎么办 刚生的小羊羔不吃奶怎么办 刚出生的婴儿不会吸奶怎么办 生完小孩七十天妈妈咳嗽怎么办 带欣的名字三个字儿的怎么办 二十多岁的儿子沉迷游戏网络怎么办 为什么打开游戏网络却用不了怎么办 打来微信网页版显示证书错误怎么办 开了家定制家具店生意不好怎么办 宝宝起风疹怎么办要注意的问题 超市买的内裤西铁牌子没去掉怎么办 没申请生产许可证贴标了怎么办 淘宝没有品牌非要我写品牌怎么办没 意外怀孕明明一直用安全套的怎么办 找不到百度网盘的dns地址怎么办 小米众筹到了发货时间不发货怎么办 不知道电脑宽带连接账号密码怎么办 电脑如果宽带账号密码忘记了怎么办 xp电脑用户名和密码忘了怎么办 电脑的用户名和密码忘记了怎么办 电脑重置后需要用户名和密码怎么办 电脑登录用户名和密码忘记了怎么办 电脑登录用户名和密码忘了怎么办啊 微信无意中点了允许登录怎么办 qq号码登录微信无法验证怎么办 注册微信公众号邮箱激活不了怎么办 不是自己申请的qq号忘密码怎么办 联通宽带拨号账号密码忘记了怎么办 忘了路由器的用户名和密码怎么办 宽带连接用户名和密码忘了怎么办 江西银行网银用户名忘记了怎么办