网络流量计费程序(7)

来源:互联网 发布:淘宝店铺装修代码下载 编辑:程序博客网 时间:2024/05/21 12:46
struct urlInfo* calculateUrlInfoList(struct message* messageHead){struct urlInfo* urlInfoHead = NULL;struct message* messagePoint = NULL;messagePoint = messageHead->next;urlInfoHead = (struct urlInfo*) malloc(sizeof(struct urlInfo));if(!urlInfoHead)return NULL;memset(urlInfoHead, 0, sizeof(struct urlInfo));while(messagePoint != NULL) {if(messagePoint->type == text) {addToUrlInfoList(urlInfoHead, messagePoint);}messagePoint = messagePoint->next;}return urlInfoHead;}void releaseUrlInfoList(struct urlInfo* urlInfoList){struct urlInfo* urlInfoPoint = NULL;struct urlInfo* lastUrlInfoPoint = NULL;lastUrlInfoPoint = urlInfoList;urlInfoPoint = urlInfoList->next;while(urlInfoPoint != NULL){free(lastUrlInfoPoint);lastUrlInfoPoint = urlInfoPoint;urlInfoPoint = urlInfoPoint->next;}}void releaseUserInfo(struct userInfo* userInfoArray){int i = 0;while(i<userAmount) {if(userInfoArray[i].urlInfoList != NULL)releaseUrlInfoList(userInfoArray[i].urlInfoList);i++;}free(userInfoArray);}void writeListToFile(struct urlInfo* urlInfoList, FILE* outFile){struct urlInfo* urlInfoPoint;urlInfoPoint = urlInfoList->next;while(urlInfoPoint != NULL) {fprintf(outFile,"%s,%d,%d\n", urlInfoPoint->url, urlInfoPoint->post, urlInfoPoint->get);urlInfoPoint = urlInfoPoint->next;}}void writeFile(struct userInfo* userInfoArray, FILE * outFile){int i = 0;while(i<userAmount) {fprintf(outFile,"%d,%d,%d\n", userInfoArray[i].userID, userInfoArray[i].duration, userInfoArray[i].urlItems);writeListToFile(userInfoArray[i].urlInfoList, outFile);i++;}//fputc(EOF, outFile);}void calculate(struct userNode* userNodeHead, FILE * outFile){int i = 0;struct userNode* userPoint = NULL;struct userInfo* userInfoArray = (struct userInfo*) malloc(sizeof(struct userInfo)*userAmount);if(!userInfoArray)return;memset(userInfoArray, 0, sizeof(struct userInfo)*userAmount);userPoint = userNodeHead->nextUserNode;while(i<userAmount) {userInfoArray[i].userID = userPoint->userID;userInfoArray[i].duration = calculateDuration(userPoint->messageHead);userInfoArray[i].urlInfoList = calculateUrlInfoList(userPoint->messageHead);userInfoArray[i].urlItems = calculateUrlItems(userInfoArray[i].urlInfoList);userPoint = userPoint->nextUserNode;i++;}writeFile(userInfoArray, outFile);if( userInfoArray!= NULL)releaseUserInfo(userInfoArray);}

原创粉丝点击