数据文件的添加,修改,删除 实例
2014-10-26 01:39
459 查看
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include<sys/types.h>
#include<sys/timeb.h>
main()
{
char *pp[] = {"Hongkong123",
"Singgapore456",
"Beijing",
"London",
"Washington"
};
AddDataFile("./config/ppp.conf",":",pp,5);
//AlterDataFlie("./config/ppp.conf",":",pp,5,"bclb4eyr0");
//DeleteDataFile("./config/ppp.conf",":","bclb4eyr0");
}
/*
*对数据文件进行添加
*参数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);
}
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include<sys/types.h>
#include<sys/timeb.h>
main()
{
char *pp[] = {"Hongkong123",
"Singgapore456",
"Beijing",
"London",
"Washington"
};
AddDataFile("./config/ppp.conf",":",pp,5);
//AlterDataFlie("./config/ppp.conf",":",pp,5,"bclb4eyr0");
//DeleteDataFile("./config/ppp.conf",":","bclb4eyr0");
}
/*
*对数据文件进行添加
*参数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);
}
相关文章推荐
- LINUX C 数据文件的添加,修改,删除 实例
- LINUX C 数据文件的添加,修改,删除 实例
- LINUX C 数据文件的添加,修改,删除 实例
- Java读取json文件并对json数据进行读取、添加、删除与修改操作
- ArcGIS shape文件 要素类包括点,面,折线,多点,多面数据表字段以及数据的查看,添加,删除,修改四大操作
- mysql用户密码修改,用户添加、删除、设置权限及源文件恢复数据库
- Java读取json文件并对json数据进行读取、添加、删除与修改操作
- ListView控件刷新函数(添加,删除,修改数据时刷新)
- 通过Dataset操作xml数据(添加,删除,修改)
- 用Nhibernate怎么实现数据的添加、删除、修改简单程序
- C#对DataGridView中的数据进行添加、修改、删除操作
- FileSystemObject组件新建/读取/添加/修改/删除功能实例
- C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据
- 用Nhibernate怎么实现数据的添加、删除、修改简单程序
- jdbc与hibernate结合修改子表数据(jdbc删除、hibernate更新/添加)
- LINUX C 配置文件的读,添加,修改,删除
- C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据
- 用Nhibernate怎么实现数据的添加、删除、修改简单程序
- 针对这一段时间ASP.NET版中比较集中突出的问题,我写了一个完整的页面,包含显示/修改/删除/添加/排序/合并/写文件/显示图片或文档,有详细代码注释
- C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据