题解 | #简单错误记录#

简单错误记录

http://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb

#include <stdio.h>
#include <string.h>
int main(){
    char str[101];
    int n;
    char note[100][17] = {'0'};   //记录日志,记100条,只输出后8条   ???为啥必须是17,不能是16
    int row[100] = {0};     //记录错误代码行号
    int num[100] = {0};     //记录错误次数
    int flag = -1;         //记录日志最后一条的位置,初始没有记录,记为-1
    while(scanf("%s%d",str,&n) != EOF){
        //截取最后路径,并保证在 16 位内
        char *p = strrchr(str, '\\');  //\cqzlyaszjvlsjmkwoqijggmybr
        p = strchr(p,p[1]);          //去除首位反斜杠
        int len = strlen(p);
        if(len > 16){
            p = p + (len -16);
            len = 16;
        }
        int i;
        for(i = 0; i <= flag; i++){//进行字符串、错误行数比较
            if((strcmp(note[i],p) == 0) && (row[i] == n)){
                num[i] = num[i] + 1;        //有记录,记录加 1
                break;
            }
        }
        if(i == flag + 1){   //没有匹配的,那就是新记录,直接存放
            flag = flag + 1;
            strcpy(note[flag],p);
            row[flag] = n;
            num[flag] = 1;
        }
    }
    if(flag < 8){
        for(int i = 0; i <= flag; i++){
            printf("%s %d %d\n",note[i],row[i],num[i]);
        }
    }else{
        for(int i = flag - 7; i <= flag; i++){
            printf("%s %d %d\n",note[i],row[i],num[i]);
        }
    }
    return 0;
}

全部评论

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务