linux C语言 对本地文件进行读写操作

linux C语言 对本地文件进行最简单读写操作

读取json文件

对本地以cjson格式保存的文本进行读取

/* 读取json文件 */
const char* ReadJson(const char* filename)
{
    //打开JSON数据文件
	int fd = open(filename,O_RDWR) ;
	if(fd < 0)
	{
		log_e("open json_file erroe");
		close(fd);
		return NULL ;
	}	

	//读取文件中的数据 
	char buf[MAX_TASKLIST_SIZE]={0};
	int ret = read(fd, buf, sizeof(buf));
	if(ret == CT_EERROR){
		log_e("read json_file error") ;
		close(fd);
		return NULL ;
	}
	//关闭文件
	close(fd);
	return buf;`在这里插入代码片`
}


//获取本地文本的json内容
taskIdList *ReadTaskIdList(char * fileName)
{
    printf("----ReadTaskIdList");
    taskIdList * tasklist = NULL;

    const char* data = ReadJson(fileName);
    if(data == NULL){
        log_e("ReadJson error") ;
        return NULL;
    }
    cJSON* root = cJSON_Parse(data);
    if(root == NULL){
		log_e("parse error") ;
		return NULL ;
	}
#if 1
	//读取json内容
	//根目录  
	cJSON *tasks_item = cJSON_GetObjectItem(root,"tasks");//获得tasks元素
	if (tasks_item == NULL){
		log_e(" read tasks error") ;
		goto __ERROR_RETURN ;
	}
#endif
__ERROR_RETURN :
	cJSON_Delete(root) ;
    return tasklist;
}

保存json文件

将json数据保存到文本

/* 保存 普通字符串 到文本文件 */
void SaveText(const char* text, const char* name)
{
    if(name == NULL){
        log_e("save failed") ;
        return ;
    }
	FILE* fp = fopen(name, "w");
	if (NULL != fp){
		fwrite(text, strlen(text), 1, fp);	
		fclose(fp);	
        log_e("save tasklist.json ok!");		
	}
	else log_e("save tasklist.json error!");
}


/* 将文本处理成json格式后保存 */
// void SaveTextToJSON(const char *text, const char* name)
void SaveTextToJSON(cJSON* json, const char* name)
{		
	if (json == NULL) {
        log_e("json is NULL");
        return NULL;
	}
	char* buff = cJSON_Print(json);
	SaveText(buff, name);	
	cJSON_Delete(json);		
	free(buff);				
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值