C语言程序静态库和动态库的创建及其应用

文章作者 100test 发表时间 2007:09:20 12:57:36
来源 100Test.Com百考试题网


在用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


相关文章


Linux操作系统下简单的远程桌面实现方法
Linux操作系统中安装内核的方法详细介绍
UbuntuLinux7.04硬盘安装配置过程总结
C语言程序静态库和动态库的创建及其应用
Linux操作系统上必需要学的系统管理命令
SCOUNIX到Linux操作系统的程序移植问题
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛