📄 netfee.cpp
字号:
#define DAYCOST 0.000007#define NIGHTCOST 0.0000035#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>void count(FILE *fpin,FILE *fpout,FILE *fpindex);void main(int argc,char *argv[]){ if(argc!=3) { printf("Usage: netfee infile outfile\n"); exit(0); } FILE *fpin,*fpout,*fpindex; if((fpin=fopen(argv[1],"rt"))==NULL) { printf("%s: file not found\n",argv[1]); exit(0); } if((fpout=fopen(argv[2],"rt"))!=NULL) { printf("%s: file is exist,overwrite(y/n)?\n",argv[2]); if(tolower(getchar())!='y') exit(0); else fclose(fpout); } if((fpout=fopen(argv[2],"w+t"))==NULL) { printf("%s: write file failed\n",argv[2]); exit(0); } if((fpindex=fopen("feeindex.txt","rt"))==NULL) { printf("can't get index file\n"); exit(0); } count(fpin,fpout,fpindex); fclose(fpout); fclose(fpin); fclose(fpindex);}void count(FILE *fpin,FILE *fpout,FILE *fpindex){ char linebuf[80],indexbuf[80]; char IPaddress[80],IPorGroup[80]; long inoctets,outoctets; float total=0; int day; float daycosts,nightcosts; long dayoctets,nightoctets; while(fgets(indexbuf,80,fpindex)!=NULL){ daycosts=0;nightcosts=0; dayoctets=0;nightoctets=0; if(sscanf(indexbuf,"%s",IPorGroup)==EOF) continue; if(IPorGroup[0]!='1'){ fprintf(fpout," Total: %8.2f\n",total); total=0; fprintf(fpout,"%s",indexbuf); continue; } fseek(fpin,0,SEEK_SET); while(fgets(linebuf,80,fpin)!=NULL){ if(strstr(linebuf,"DAY")) { day=1; continue; } else if(strstr(linebuf,"NIGHT")) { day=0; continue; } sscanf(linebuf,"%s %ld %ld",IPaddress,&outoctets,&inoctets); if(strcmp(IPaddress,IPorGroup)) continue; if(day){ dayoctets=inoctets; daycosts=inoctets*DAYCOST; total+=daycosts; } else{ nightoctets=inoctets; nightcosts=inoctets*NIGHTCOST; total+=nightcosts; } } fprintf(fpout,"%s ",indexbuf); fprintf(fpout," %10.2f %8ld %8ld\n",daycosts+nightcosts,dayoctets,nightoctets); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -