程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> C語言程序靜態庫和動態庫的創建及其應用

C語言程序靜態庫和動態庫的創建及其應用

編輯:C語言基礎知識

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved