#include <string.h>
/* 错误记录结构体 */
typedef struct ErrRecord
{
char value[20];
char line[10];
int num;
}ErrRecord_T, *ErrRecord_p;
int main()
{
char inputStr[101] = {0};
struct ErrRecord errRecordData[100];
char *str = NULL;
int j = 0;
int index = 0;
int flag;
int m;
memset(errRecordData, 0, sizeof(struct ErrRecord) * 100);
while(gets(inputStr) != NULL)
{
int i;
int k;
struct ErrRecord errRecord;
memset(&errRecord, 0 , sizeof(errRecord));
str = strtok(inputStr, " ");
j = 0;
flag = 0;
/* 查询到最后一个 \ 或者 最后16个字符 下标位置 */
for( i = strlen(str) - 1; str[i] != '\\' && j <= 15; i--, j++);
strcpy(errRecord.value, &str[i+1]);
str = strtok(NULL, " ");
strcpy(errRecord.line, str);
errRecord.num = 1;
/* 匹配之前是否有重复 */
for( k = 0; k <= index; k++)
{
// printf("errRecord value = %s, line = %s, num = %d \n", errRecord.value, errRecord.line, k);
// printf("errRecordData value = %s, line = %s, num = %d \n", errRecordData[k].value, errRecordData[k].line,
// k);
if(strcmp(errRecordData[k].value, errRecord.value) == 0 && strcmp(errRecordData[k].line, errRecord.line) == 0)
{
errRecordData[k].num++;
flag = 1;
break;
}
}
/* 没有重复则,添加当前记录 */
if(!flag)
{
errRecordData[index] = errRecord;
// printf("errRecordData value = %s, line = %s, index = %d \n", errRecordData[index].value, errRecordData[index].line,
index++;
}
}
if(index >= 8)
{
m = index - 8;
}else
{
m = 0;
}
for(m; m < index; m++)
{
printf("%s %s %d\n", errRecordData[m].value, errRecordData[m].line, errRecordData[m].num);
}
return 0;
}