微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的 strncmp 不适用于两个二维数组

如何解决我的 strncmp 不适用于两个二维数组

我正在尝试比较和查找我的两个数组中的匹配项,但它不起作用,有人可以帮忙吗?

const char spam[30][30] = {"cash bonus","earn money","fast cash","free access","free gift","free membership","giveaway","million dollars","information you requested","act Now","winner","you have been selected","congratulations","lose weight","meet singles","no cost","no interest","social securtiy number","bonus","ad","join millions","opt in","warranty","instant","prize","lowest price","get paid","get out of debt","one time","winning"};
    char resp[SIZE][SIZE];//response string array 
    printf("Enter an email to be checked for spam\n");
    scanf("%s",&resp);
    
    //check if there is a match
    for(int i = 0; i < 30; i++){
        for(int j = 0; j < 30; j++){
        resp[i][j] = tolower(resp[i][j]);//make it lowercase
        int match = strncmp(resp[i],spam[i] );//compare 
        if(match == 0){
            printf("This email is spam! :(\n");
        }else{
            printf("No match :) \n");
        }//if else
    }//for loop2
    }//for loop1

解决方法

您无法以这种方式真正实现目标。您的垃圾邮件库元素由 2 个以空格分隔的单词组成。但是您的输入只是每个 resp[i] 中的一个词。 (除了使用 scanf() 逐字输入之外,没有简单的方法可以在 2D 数组中获取输入。
因此,当您将单个单词 resp[i] 与双单词字符串 cash bonus 进行比较时,它总是返回 false
Here 是可以帮助您的指南。另外,我很想更新这个问题。有没有办法用字符串字典来识别垃圾邮件,比如 spam 二维数组?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。