嵌入式 简单的读取文件并打印指定字符串的值
2013-12-04 19:50
295 查看
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <fcntl.h> #include <sys/types.h> #ifdef __DEBUG__ #define msg_print(...) printf(__VA_ARGS__) #else #define msg_print(...) #endif #define CONF_FILE_PATH "./ipnc_conf.conf" #define MAX_VALUE_LEN 32 #define ARGV_NOT_EXIST 2 #define ARGV_EXIST 5 #define DEFALUT_JIPNC_ID "jipnc00000000005" #define DEFALUT_JIPNC_KEY "12345678" #define DEFALUT_JIPNC_DEVICE_TYPE "30" int joseph_read_conf(const char *key, char *value); int joseph_create_conf(const char *id, const char *key, const char *device_type, int flag); int joseph_create_conf(const char *id, const char *key, const char *device_type, int flag) { int conf_fd; int ret; char buffer[1024] = {0}; if(flag == ARGV_NOT_EXIST){ conf_fd = open(CONF_FILE_PATH, O_RDONLY | O_EXCL, 777); msg_print("conf_fd = %d\n",conf_fd); if(conf_fd > 0){ close(conf_fd); return 0; } } conf_fd = open(CONF_FILE_PATH, O_WRONLY | O_CREAT | O_TRUNC, 777); sprintf(buffer, "ipnc_id %s\nipnc_key %s\ndevice_type %s\n", id, key, device_type); ret = write(conf_fd, buffer, 1024); msg_print("ret = %d\nbuffer = %s", ret, buffer); close(conf_fd); return 0; } int joseph_read_conf(const char *key, char *value) { FILE *stream = NULL; char cmd[64] = {0}; if(NULL == key || 0 == strlen(key)){ msg_print("invalid parameter!\n"); return -1; } sprintf(cmd, "cat %s | awk '/%s/{print $2}'", CONF_FILE_PATH, key); msg_print("cmd = %s\n",cmd); stream = popen(cmd,"r"); if(fread(value, sizeof(char), MAX_VALUE_LEN, stream) <= 0){ pclose(stream); return -1; } strcpy(value + strlen(value) - 1, "\0"); msg_print("%s = %s\n", key, value); pclose(stream); system("rm -rf ./ipnc_conf.conf"); return 0; } int main(int argc,char *argv[]) { char value[32] = {0}; //if(argc != 1 || argc != 4) //{ // printf("invalid parameter!\n"); // return -1; //} #if 1 if(ARGV_NOT_EXIST == argc) joseph_create_conf(DEFALUT_JIPNC_ID, DEFALUT_JIPNC_KEY ,DEFALUT_JIPNC_DEVICE_TYPE, ARGV_NOT_EXIST); else if(ARGV_EXIST == argc) joseph_create_conf(argv[1], argv[2] ,argv[3], ARGV_EXIST); else{ printf("invalid parameter!\n"); return -1; } #endif joseph_read_conf("ipnc_id", value); printf("%s = %s\n", "ipnc_id", value); return 0; }
相关文章推荐
- 编写一个程序,一行行地读取输入行,直至到达文件尾。算出每行输入行的长度,然后把最长的那行打印出来。为了简单起见,你可以假定所有的输入行均不超过1000个字符
- 文本文件存在字符串数组,再按指定行截取,可以用来拆分文件。打印显示效果
- 读取指定目录下文件-- ---LIST+递归。(跳出结构思想。利用数据结构思路+程序写出更简单的逻辑。)
- python 文件和目录 当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- java读取文件夹下所有文件并替换文件每一行中指定的字符串
- unity 在指定目录创建文件/读取文件/在文件内写入字符串
- shell读取文件的指定行字符串 -sed
- 读取一个指定的*.Java文件,并打印在控制台上
- 编写一个Python程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径
- Python:编写函数,能在当前目录以及子目录下查找文件名包含指定字符串的文件,并打印出完整路径
- gerp(1):查找文件中指定的字符串,并打印该行
- shell 脚本 打印指定目录下包含某些字符串的文件
- 【代码】当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径
- 简单的读取文件内容并写到另一个指定的文件中
- shell读取文件的指定行字符串
- Python 在当前目录以及其子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- java读取文件夹下所有文件并替换文件每一行中指定的字符串
- Python读取文件中一串字符串并且把其中所有的数字组成一个新的字符串,并且打印出来
- 可见strings能输出文件中的可打印字符串(可指定字符串的最小长度),通常用来查看非文本文件(如二进制可执行文件)中的可读内容。
- java读取文件夹下所有文件并替换文件每一行中指定的字符串