题解 | #简单错误记录#

简单错误记录

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;
}

全部评论

相关推荐

鼠鼠第一次实习,啥也不懂一直是自己一个人吃的饭,不会做工作老是被嫌弃,大人的世界是这样的吗?
我是星星我会发亮:好的mt有两种,一种愿意教你的,一种几乎什么活都不给你派让你很闲允许你做自己事情的
点赞 评论 收藏
分享
06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务