⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cfgfile.c

📁 用GTK+做用户界面 股票每日分时行情用数据库管理——MYSQL 软件应用方式客户端/服务器模式 基于TCP/IP的C/S通信模式 实现STOCK
💻 C
字号:
#include <unistd.h>#include <fcntl.h>#include <sys/stat.h>#include "gmclient.h"char sqlhost[50];char sqluser[20];char sqlpassword[20];unsigned int sqlport;char sqlsocket[100];GdkColor background;GdkColor layoutline;GdkColor font;GdkColor klineup;GdkColor klinedown;GdkColor aline;GdkColor kavgline1;GdkColor kavgline2;GdkColor kavgline3;GdkColor kavgline4;GdkColor kavgline5;GdkColor jszb1;GdkColor jszb2;GdkColor jszb3;GdkColor jszb4;GdkColor jszb5;GdkColor up;GdkColor down;GdkColor equal;GdkColor fsline;GdkColor fsavgline;GdkColor fscolume;COLORARRAY ca[]={      {"背景颜色","background",&background},      {"线框颜色","layoutline",&layoutline},      {"字体颜色","font",&font},      {"上涨K线","klineup",&klineup},      {"下跌K线","klinedown",&klinedown},      {"美国线  ","aline",&aline},      {"均线一  ","kavgline1",&kavgline1},      {"均线二  ","kavgline2",&kavgline2},      {"均线三  ","kavgline3",&kavgline3},      {"均线四  ","kavgline4",&kavgline4},      {"均线五  ","kavgline5",&kavgline5},      {"指标线一","jszb1",&jszb1},      {"指标线二","jszb2",&jszb2},      {"指标线三","jszb3",&jszb3},      {"指标线四","jszb4",&jszb4},      {"指标线五","jszb5",&jszb5},      {"上涨颜色","up",&up},      {"下跌颜色","down",&down},      {"相等颜色","equal",&equal},      {"分时线  ","fsline",&fsline},      {"分时均线","fsavgline",&fsavgline},      {"分时量  ","fscolume",&fscolume},      {"","",NULL}};gchar eg[MAXCFGLINELEN];gchar si[MAXCFGLINELEN];gchar sr[MAXCFGLINELEN];FONTARRAY fa[]={       {"英文字体","eg",eg},       {"列表字体","si",si},       {"图形字体","sr",sr},       {"","",NULL} };int cfgfileflag=0;static int cfgfilelinenum=0;/* 0--read fail 1--success*/static gchar *cfgrec[MAXCFGFILELINENUM];static gchar cfgstr[MAXCFGLINELEN];static int readCfgFile(void);//static int printCfg(void);static int findCfgLine(gchar *str);static int findChar(gchar *str,gchar c);static int readCfgRecord(gchar *str,gchar *context);static int readCfgColorRecord(gchar *str,GdkColor *c);static int writeCfgRecord(gchar *str,gchar *context);static int writeCfgColorRecord(gchar *str,GdkColor *c);static int writeCfgFile(void);int readCfg(void){   int mod;    char tmp[20];   if(cfgfileflag)  releaseCfgRecord();   if(!readCfgFile()) return FAIL;   //   printf("go here\n");   for(mod=0;ca[mod].color;mod++)      readCfgColorRecord(ca[mod].colorname,ca[mod].color);      for(mod=0;fa[mod].font;mod++)      readCfgRecord(fa[mod].fontname,fa[mod].font);         readCfgRecord("host",sqlhost);   readCfgRecord("user",sqluser);   readCfgRecord("password",sqlpassword);   readCfgRecord("port",tmp);   sqlport=atoi(tmp);   readCfgRecord("unixsocket",sqlsocket);   return SUCCESS;   }int writeCfg(void){  int i;  int flag=0;  char tmp[20];     for(i=0;ca[i].color;i++)     writeCfgColorRecord(ca[i].colorname,ca[i].color);      for(i=0;ca[i].color;i++)     writeCfgRecord(fa[i].fontname,fa[i].font);      writeCfgRecord("host",sqlhost);   writeCfgRecord("user",sqluser);   writeCfgRecord("password",sqlpassword);   sprintf(tmp,"%d",sqlport);   writeCfgRecord("port",tmp);   writeCfgRecord("unixsocket",sqlsocket);     flag=writeCfgFile();  return flag;}int readCfgFile(void){   FILE *fp;   gchar tmpstr[MAXCFGLINELEN];   gchar tmpchar;   int linelen;      if((fp=fopen(CFGFILE,"r"))==NULL){       printf("Read config file <stock.conf> error.\n");       printf("Please check stock.conf is exist,\n");       printf("and restart program!\n");       return FAIL;   }   fseek(fp,0,SEEK_SET);   linelen=0;   while(!feof(fp)){     tmpchar=fgetc(fp);     if(tmpchar == '\n'){       tmpstr[linelen]='\0';       cfgrec[cfgfilelinenum]=(gchar *)            g_malloc(sizeof(char)*(linelen+1));       strcpy(cfgrec[cfgfilelinenum],tmpstr);       cfgfilelinenum++;       if(cfgfilelinenum >= MAXCFGFILELINENUM)         return FAIL;       linelen=0;      }      else{       if(linelen<MAXCFGLINELEN){         tmpstr[linelen]=tmpchar;         linelen++;       }      }    }    tmpstr[linelen-1]='\0';    cfgrec[cfgfilelinenum]=(gchar *)           g_malloc(sizeof(char)*(linelen+1));    strcpy(cfgrec[cfgfilelinenum],tmpstr);    cfgfilelinenum++;//    printf("cfglinenum: %d\n",cfgfilelinenum);     cfgfileflag = 1;    fclose(fp);    return SUCCESS;}  int writeCfgFile(void){   FILE *fp;   gchar tmpstr[MAXCFGLINELEN];   int i;      if(!cfgfileflag)     return FAIL;   if((fp=fopen(CFGFILE,"w"))==NULL){       printf("write stock.conf file error.\n");       return FAIL;   }   fseek(fp,0,SEEK_SET);   for(i=0;i<cfgfilelinenum;i++){      if(i==(cfgfilelinenum-1)){         sprintf(tmpstr,"%s",cfgrec[i]);      }       else{         sprintf(tmpstr,"%s%c",cfgrec[i],'\n');       }     fwrite(tmpstr,1,strlen(tmpstr),fp);    }    fclose(fp);    return SUCCESS;} int readCfgRecord(gchar *str,gchar *context){  int line;  gchar *tmpstr;    if((line=findCfgLine(str))== -1){      return FAIL;  }  else{//    printf("find %d\n",line);    bzero(cfgstr,MAXCFGLINELEN);    strcpy(cfgstr,strchr(cfgrec[line],'='));    tmpstr=&cfgstr[1];    strcpy(context,ltrimStr(tmpstr));    return SUCCESS;  }     }int writeCfgRecord(gchar *str,gchar *context){  int line;  int add;    if((line=findCfgLine(str))== -1){      return FAIL;  }  else{    if((add=findChar(cfgrec[line],'='))==-1){        return FAIL;    }    else{       strcpy(&cfgrec[line][add+1],context); //       printf("write %s %s success.\n",str,context);       return SUCCESS;    }  }     }int readCfgColorRecord(gchar *str,GdkColor *c){   gchar cstr[10];   gchar tmp[MAXCFGLINELEN];      if(readCfgRecord(str,tmp)){     c->pixel=0;     strncpy(cstr,tmp,6);     cstr[6]=0;     c->red=strtol(cstr,(char **)NULL,16);             strncpy(cstr,&tmp[7],6);     cstr[6]=0;     c->green=strtol(cstr,(char **)NULL,16);             strncpy(cstr,&tmp[14],6);     cstr[6]=0;     c->blue=strtol(cstr,(char **)NULL,16);           }   else{     c->pixel=0;     c->red=0xFFFF;        c->green=0xFFFF;     c->blue=0xFFFF;      }      return SUCCESS;}int writeCfgColorRecord(gchar *str,GdkColor *c){  int line;  gchar cstr[200];     if((line=findCfgLine(str))== -1){      return FAIL;  }    sprintf(cstr,"0x%4X,0x%4X,0x%4X",c->red,c->green,c->blue);  return writeCfgRecord(str,cstr);   }int findCfgLine(gchar *str){   int i;   if(!cfgfileflag)      return -1;   for(i=0;i<cfgfilelinenum;i++){      if(cfgrec[i][0] == '#'){         continue;      }//      printf("%s %s\n",cfgrec[i],str);      if(!strncmp(cfgrec[i],str,strlen(str))){          return i;      }      else{         continue;      }   }   return -1;          }int findChar(gchar *str,gchar c){  int i;    if(str == NULL) return -1;  for(i=0;i<(int)strlen(str);i++){     if(str[i] == c) return i;  }  return -1;}int printCfg(void){   int i;      if(!cfgfileflag)      return FAIL;         for(i=0;i<cfgfilelinenum;i++)      printf("%s\n",cfgrec[i]);         return SUCCESS;}void releaseCfgRecord(void){   int i;     if(!cfgfileflag)      return;   for(i=0;i<cfgfilelinenum;i++)    g_free(cfgrec[i]);    cfgfileflag = 0 ;         cfgfilelinenum = 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -