c - 如何通过多个字符比较两个字符串?
问题描述
所以我想通过不止一个字符来比较两个字符串。我知道如何逐个字符比较两个字符串,或者仅按选定位置上的字符比较,但我不确定如何通过多个字符比较两个字符串?例如,我想通过 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");
解决方案
您需要获取字符串的长度,从中减去 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");
}
推荐阅读
- regex - 阿帕奇位置匹配
- javascript - 如何在 PayPal 智能按钮交易中发送自定义数据字段
- javascript - 如何访问使用 = 而不是键值对的对象中的属性
- bitbucket - 生成发行说明 (CHANGELOG.md)
- php - 空或空数组值不过滤或从数组列表中删除
- javascript - 在反应应用程序中导入 jQuery 时,如何在内联脚本中使用 jQuery?
- javascript - 如何在 JavaScript 中使用 Mongoose 动态更新文档?
- typescript - 打字稿:将类型约束为数组
- python - 找到GPU后,如何强制张量流忘记GPU?
- android - 如何使用三星的默认日/夜通知背景颜色?