這篇博客是學習傳智播客c++教程的做業,經過在網上進行蒐集來完成,可是網上有類似的代碼,可是結果老是有點問題,因此本文寫了這篇記錄下。c++
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> //3.1去除字符串右邊的空格 char *TrimStrR(char *SrcStr) { if (SrcStr == NULL) { printf("TrimStrR function is error!"); return NULL; } int i = 0; int iLen = strlen(SrcStr); for(i = (iLen -1);i>=0;i--) { if(SrcStr[i] == ' ') SrcStr[i] = 0; else break; } return SrcStr; } //3.2去掉字符串左邊的空格 char *TrimStrL(char *SrcStr) { if (SrcStr == NULL) { printf("TrimStrR function is error!"); return NULL; } if(SrcStr[0] != ' ') { return SrcStr; } int i = 0; int iLen = strlen(SrcStr); if(iLen == 0) { return SrcStr; } char *stemp = (char*)malloc(iLen+1); memset(stemp,0,iLen+1); memcpy(stemp,SrcStr,iLen); for(i = 0;i<iLen;i++) { if(SrcStr[i] != ' ') { strcpy(stemp,SrcStr+i); break; } } strcpy(SrcStr,stemp); free(stemp); return SrcStr; } //3.3解析帶等號的字符串並去掉字符串傳尾部空格 void ParseValueStr(char *Des,char* SrcStr) { int iLen = strlen(SrcStr); if(iLen == 0) { return ; } if((SrcStr[iLen -1] == '\n')||(SrcStr[iLen -1] == '\r')) { SrcStr[iLen -1] = '\0'; } if(iLen > 1) { if((SrcStr[iLen -2] == '\n')||(SrcStr[iLen -2] == '\r')) { SrcStr[iLen -2] = '\0'; } } TrimStrR(SrcStr); int i = 0; for(i= 0;i<iLen;i++) { if((*SrcStr) == '=') { strcpy(Des,++SrcStr); break; } ++SrcStr; } TrimStrL(Des); } //3.4計算數組buf中的最大值,參數bufsize爲參數buf的元素數量 int max(const int *buf,const int bufsize) { int tmp = buf[0]; int i = 0; for(i = 0;i<bufsize;i++) { if(tmp <= buf[i]) tmp = buf[i]; } return tmp; } float avg(const int *buf,const int bufsize) { float sum = 0; int i = 0; for(i = 0;i<bufsize;i++) { sum += buf[i]; } return sum/bufsize; } int min(const int *buf,const int bufsize) { int tmp = buf[0]; int i = 0; for(i = 0;i<bufsize;i++) { if(buf[i] == 0) continue; if(tmp >= buf[i]) tmp = buf[i]; } return tmp; } int main(int args, char*argc[]) { if (args < 2) { printf("parameters is error!\n"); } char buf[100]; char value[100]; int values[32]; memset(values,0,sizeof(values)); FILE* fp = fopen(argc[1], "r"); int i = 0; int j = 0; while(!(feof(fp))) { memset(buf,0,sizeof(buf)); memset(value,0,sizeof(value)); fgets(buf,sizeof(buf),fp); ParseValueStr(value,buf); values[i] = atoi(value); i++; } for(j = 0;j<i-1;j++) { printf("%d\n",values[j]); } fclose(fp); printf("最大值:%d\n",max(values,i)); printf("最小值:%d\n",min(values,i)); printf("平均值:%f\n",avg(values,i)); return 0; }
下面是運行後的結果:數組