在用c写程序时,很多时候需要存储一些简单的数据,如果为此而用mysql数据库就有些大才小用了,可以把这些数据以结构的形写入文件,然后再需要时读取文件,取出数据。
如下是定义函数的源文件和头文件:
源文件struct.c:
#include "struct.h"
//第一个参数是要写入的文件名,第二个参数是缓冲区,第三个参数是缓冲区大小,
第四个参数是打开文件流的形态,返回TRUE表示写入成功,返回FALSE表示写入失败
int writeStruct(const char *fileName,char *buffer,int bufferLen,char *mode){
int ret.
FILE *fileID = NULL.
fileID = fopen(fileName,mode).
if (fileID == NULL){
perror("fopen").
goto writeEnd.
}
rewind(fileID).
ret = fwrite(buffer,bufferLen,1,fileID).
if (ret <= 0){
perror("fwrite").
goto writeEnd.
}
if (fileID != NULL){
fclose(fileID).
fileID = NULL.
}
return TRUE.
writeEnd:
if (fileID != NULL){
fclose(fileID).
fileID = NULL.
}
return FALSE.
}
//第一个参数是要读取的文件名,第二个参数是缓冲区,第三个参数是缓冲区大小,
第四个参数是打开文件流的形态,返回TRUE表示读取成功,返回FALSE表示读取失败
int readStruct(const char *fileName,char *buffer,int bufferLen,char *mode){
int ret.
FILE *fileID = NULL.
fileID = fopen(fileName,mode).
if (fileID == NULL){
perror("fopen").
goto readEnd.
}
rewind(fileID).
memset(buffer,0,sizeof(buffer)).
ret = fread(buffer,bufferLen,1,fileID).
if (ret >= 0){
strcat(buffer,"\0").
}else{
perror("fread") .
goto readEnd.
}
if (fileID != NULL){
fclose(fileID).
fileID = NULL.
}
return TRUE.
readEnd:
if (fileID != NULL){
fclose(fileID).
fileID = NULL.
}
return FALSE.
} |
头文件struct.h:
#ifndef OWNSTRUCT_H_
#define OWNSTRUCT_H_
#include
#include
#include
#define FALSE 0
#define TRUE 1
//第一个参数是要写入的文件名,第二个参数是缓冲区,第三个参数是缓冲区大小,
第四个参数是打开文件流的形态,返回TRUE表示写入成功,返回FALSE表示写入失败
int writeStruct(const char *fileName,char *buffer,int bufferLen,char *mode).
//第一个参数是要读取的文件名,第二个参数是缓冲区,第三个参数是缓冲区大小,
第四个参数是打开文件流的形态,返回TRUE表示读取成功,返回FALSE表示读取失败
int readStruct(const char *fileName,char *buffer,int bufferLen,char *mode).
#endif |
相关文章
用一维数组存储上三角螺旋矩阵
C语言中的指针和内存泄漏
C语言程序静态库和动态库的创建及其应用
C辅导:三视图的画法
用C语言编写Windows服务程序的五个步骤
C语言中实现点在多边形内算法
使用Kylix3开发ApacheDSO
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛