C 数据文件的添加,修改,删除
来源:互联网 发布:华为手机端口怎么查 编辑:程序博客网 时间:2024/06/06 04:36
http://blog.csdn.net/mochouxiyan/article/details/2918298
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include<sys/types.h> #include<sys/timeb.h>#define file_path "/usr/local/mytools/video_info/video_list_timeout.txt" void main() { char *pp[] = {"Hongkong123", "Singgapore456", "Beijing", "London", "Washington" }; AddDataFile(file_path,"\n",pp,5); //AlterDataFlie("./config/ppp.conf",":",pp,5,"bclb4eyr0"); DeleteDataFile(file_path,"\n","London"); } /* *对数据文件进行添加 *参数1,数据文件路径,参数二,行内数据分隔符,参数三,传入数据指针数组,参数四,数组下标个数 * */ int AddDataFile(char *af_file_path,char *af_sign,char **pp,int *array_sum) { /* *随机生成一个5到8位的随机数 */ unsigned int seedVal; struct timeb timeBuf; ftime(&timeBuf); seedVal=((((unsigned int)timeBuf.time&0xFFFF)+ (unsigned int)timeBuf.millitm)^ (unsigned int)timeBuf.millitm); srand((unsigned int)seedVal); char buffer[10]; memset(buffer,0,sizeof(buffer)); int len = (rand() % (9-6))+ 7; static const char string[]= "0123456789abcdefghiljklnopqrstuvwxyz"; int i; for(i = 0; i < len; i++) { buffer[i] = string[rand()% (strlen(string)-1)]; } char chnew_filebuf[256]; memset(chnew_filebuf,0,sizeof(chnew_filebuf)); strcat(chnew_filebuf,buffer); int j; for(j = 0;j < array_sum ; j++) { strcat(chnew_filebuf,af_sign); strcat(chnew_filebuf,pp[j]); } printf("------->%s<---------/n",chnew_filebuf); FILE *f; f = fopen(af_file_path,"r+"); fseek(f,0,SEEK_END); fseek(f,-1,SEEK_CUR); if (fgetc(f)== 10) { fseek(f,0,SEEK_END); fputs(chnew_filebuf,f); } else { fseek(f,0,SEEK_END); fputs("/n",f); fputs(chnew_filebuf,f); } fclose(f); } /* *对数据文件进行修改 *参数1,数据文件路径,参数二,行内数据分隔符,参数三,传入数据指针数组,参数四,数组下标个数,参数五,修改标记值 */ int AlterDataFlie(char *alf_file_path,char *alf_sign,char **pp,int *array_sum,char *al_linesign) { char chnew_filebuf[256]; char datafile_linebuf[256]; char line_name[40]; char *leave_line; memset(chnew_filebuf,0,sizeof(chnew_filebuf)); strcat(chnew_filebuf,al_linesign); int i; for(i = 0;i < array_sum ; i++) { strcat(chnew_filebuf,alf_sign); strcat(chnew_filebuf,pp[i]); } printf("------->%s<---------/n",chnew_filebuf); FILE *f; f = fopen(alf_file_path,"r+"); if(f == NULL) { printf("OPEN CONFIG FALID/n"); return 0; } fseek(f,0,SEEK_END); long datafile_lenth = ftell(f); int datafilebuf_lenth = strlen(chnew_filebuf); char sum_buf[datafile_lenth+datafilebuf_lenth]; memset(sum_buf,0,sizeof(sum_buf)); fseek(f,0,SEEK_SET); while(fgets(datafile_linebuf,256,f) != NULL) { if(strlen(datafile_linebuf) < 3) //判断是否是空行 { strcat(sum_buf,datafile_linebuf); continue; } leave_line = NULL; leave_line = strstr(datafile_linebuf,alf_sign); if(leave_line == NULL) //去除无标记的情况 { strcat(sum_buf,datafile_linebuf); continue; } int leave_num = leave_line - datafile_linebuf; memset(line_name,0,sizeof(line_name)); strncpy(line_name,datafile_linebuf,leave_num); if(strcmp(line_name,al_linesign) ==0) { strcat(sum_buf,chnew_filebuf); strcat(sum_buf,"/n"); } else { strcat(sum_buf,datafile_linebuf); } if(fgetc(f)==EOF) { break; } fseek(f,-1,SEEK_CUR); memset(datafile_linebuf,0,sizeof(datafile_linebuf)); } printf("----->%s<------/n",sum_buf); remove(alf_file_path); fclose(f); FILE *fp; fp = fopen(alf_file_path,"w+"); if(fp == NULL) { printf("OPEN CONFIG FALID/n"); return 2; } fseek(fp,0,SEEK_SET); fputs(sum_buf,fp); fclose(fp); } /* *对数据文件进行删除 *参数1,数据文件路径,参数二,行内数据分隔符,参数三,删除标记值 */ int DeleteDataFile(char *dlf_file_path,char *dlf_sign,char *dl_linesign) { char datafile_linebuf[256]; char line_name[40]; char *leave_line; FILE *f; f = fopen(dlf_file_path,"r+"); if(f == NULL) { printf("OPEN CONFIG FALID/n"); return 0; } fseek(f,0,SEEK_END); long datafile_lenth = ftell(f); char sum_buf[datafile_lenth]; memset(sum_buf,0,sizeof(sum_buf)); fseek(f,0,SEEK_SET); while(fgets(datafile_linebuf,256,f) != NULL) { if(strlen(datafile_linebuf) < 3) //判断是否是空行 { strcat(sum_buf,datafile_linebuf); continue; } leave_line = NULL; leave_line = strstr(datafile_linebuf,dlf_sign); if(leave_line == NULL) //去除无标记的情况 { strcat(sum_buf,datafile_linebuf); continue; } int leave_num = leave_line - datafile_linebuf; memset(line_name,0,sizeof(line_name)); strncpy(line_name,datafile_linebuf,leave_num); if(strcmp(line_name,dl_linesign) ==0) { } else { strcat(sum_buf,datafile_linebuf); } if(fgetc(f)==EOF) { break; } fseek(f,-1,SEEK_CUR); memset(datafile_linebuf,0,sizeof(datafile_linebuf)); } printf("---sum_buf---->%s<----------/n",sum_buf); remove(dlf_file_path); fclose(f); FILE *fp; fp = fopen(dlf_file_path,"w+"); if(fp == NULL) { printf("OPEN CONFIG FALID/n"); return 2; } fseek(fp,0,SEEK_SET); fputs(sum_buf,fp); fclose(fp); }
0 0
- C 数据文件的添加,修改,删除
- LINUX C 数据文件的添加,修改,删除 实例
- LINUX C 数据文件的添加,修改,删除 实例
- LINUX C 数据文件的添加,修改,删除 实例
- 数据文件的添加,修改,删除 实例
- 添加数据文件及修改数据文件的位置
- 添加、删除数据文件个数
- LINUX C 配置文件的读,添加,修改,删除
- LINUX C 配置文件的读,添加,修改,删除
- 关于Cookie的添加/修改/删除操作体验(C#)
- 关于Oracle表空间数据文件的修改删除操作
- 关于Oracle表空间数据文件的修改删除操作
- 撤销表空间+创建撤销表空间+添加数据文件+修改数据文件大小+设置数据文件的状态
- 修改oracle的数据文件
- C#.net对Access数据库做的添加、删除、查找、修改的例子
- 转载 UltraWebGrid的添加、修改、删除
- JList的修改、删除与添加
- 环境变量的添加、删除、修改方法
- Camel路由启动过程--续
- Linux 的多线程编程的高效开发经验
- 请问有统一给txt批量编号的文件吗
- CoAP学习笔记——nodeJS node-coap安装和使用(windows平台)
- mysql host ... is not allowed to connect to this MySql server
- C 数据文件的添加,修改,删除
- 软件质量之道
- 关于接口测试的总结
- [寒江孤叶丶的CrossApp之旅_03]CrossApp编译错误There is no SDK with the name or path
- Hadoop-2.4.1学习之SecondaryNameNode、CheckpointNode、BackupNode
- 使用Eclipse编写运行Java程序
- 系统测试如何进行?
- 最长公共子序列
- Java语言中自增(++)和自减(--)运算符