在c语言中可以用fopen函数打开一个文件,并对文件进行读写
头文件是头文件:#include<stdio.h>
fopen
FILE*fopen(const char *path,const char*mode)
参数说明:
path:是一个字符串,包含欲打开的文件路径及文件名
mode:mode字符串则代表着流形态
r: 读,该文件必须存在;
w: 打开只写文件,若文件存在则长度清为0,即该文件内容消失,若不存在则创建该文件
r+: 以读/写方式打开文件,该文件必须存在
w: 打开可读/写文件
fgets
char *fgets(char *str, int n, FILE *stream)
str – 这是指向一个字符数组的指针,该数组存储了要读取的字符串。
n – 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。
每次读取一行
示例
#include<stdio.h>
#include<stdlib.h>
#include "json.h"
int main(void)
{
FILE *fp;
char buff[200]={0};
json_object *pObject = NULL;//定义json的结构体
if ((fp = fopen("./file_config", "r")) == NULL) {//打开以只读的形式file_config文件
printf("file isn't exist\n");
return -1;
}
// for(int i = 0; i< 3 ; i++) {
fgets(buff, 100,fp);//读取文件中的内容到buff中去,大小为100
// printf("%s\n",buff);
// }
pObject = json_tokener_parse(buff);//把读出到的内容转化为json格式
printf("%s\n",json_object_to_json_string(pObject)); //把json格式的数据转化为json格式的字符串
json_object_object_foreach(pObject, key, value) {//把json格式的数据分割为key和value
printf("%s:%s\n", key,json_object_to_json_string(value));
}
fclose(fp);//关闭文件
return 0;
}
file_config
要使用上面的函数解析json格式的数据,文件中的内容要类似{“key”: value} 这样的形式
{"Min":2, "MAX":2, "Req":3,"Request":1}
Makefile
CC=gcc
INC=/usr/local/include/json-c/
LIB=json-c
LIB_PATH=/usr/local/lib/
file:file.c
$(CC) -o $@ $< -I$(INC) -L$(LIB_PATH) -l$(LIB)
.PHONY clean:
-rm -f file
结果
kayshi@ubuntu:~/code/file_opration$ ./file
{ "Min": 2, "MAX": 2, "Req": 3, "Request": 1 }
Min:2
MAX:2
Req:3
Request:1