首页 > 解决方案 > 如何通过多个字符比较两个字符串?

问题描述

所以我想通过不止一个字符来比较两个字符串。我知道如何逐个字符比较两个字符串,或者仅按选定位置上的字符比较,但我不确定如何通过多个字符比较两个字符串?例如,我想通过 3 个最后一个字符来比较两个字符串,我该怎么做?

我试过这个:

if( strcmp(str1-1, str2-1)==0 && strcmp(str1-2, str2-2) ==0)

但它不起作用。我使用 scanf 函数从用户那里获取两个字符串。

if( strcmp(str1, str2) ==0){
    printf("equal");
}else{
    printf("not");

标签: cstrcmp

解决方案


您需要获取字符串的长度,从中减去 3,然后将其添加到字符串的开头以获取开始比较的索引。此外,如果字符串的长度小于 3,请确保不会得到负索引。

size_t len1 = strlen(str1);
size_t index1 = len1 >= 3 ? len1 - 3 : 0;
size_t len2 = strlen(str2);
size_t index2 = len2 >= 3 ? len2 - 3 : 0;

if (strcmp(str1 + index1, str2 + index2) == 0) {
    printf("equal\n");
} else {
    printf("not equal\n");
}

推荐阅读