【问题标题】:How to compare two characters without case sensitivity in C?如何在C中比较两个不区分大小写的字符?
【发布时间】:2019-03-17 14:26:27
【问题描述】:

我正在尝试比较两个字符串中的两个特定字符,但我想进行比较不区分大小写。我该怎么做?

现在我正在使用这样的代码:

if (str1[i]==str2[j]) printf("Equal");

但我想在不区分大小写的情况下执行此操作。

提前感谢您抽出宝贵时间提供帮助!

【问题讨论】:

  • 您的字符串元素的语言、字符编码/代码页和类型是什么?

标签: c arrays string char compare


【解决方案1】:

您可以对两个字符使用小写,例如使用 tolower 函数:

if (tolower(str1[i])==tolower(str2[j])) printf("Equal");

还请记住:tolower 不适用于多字节字符。所以对于那些字符你应该使用其他功能

【讨论】:

  • tolower() 函数会影响字符串中的原始字符吗?不管怎样,谢谢你的回答!
  • 不,您按值传递 char,而不是按指针传递。所以这个函数不可能改变它
  • 感谢您的帮助!
【解决方案2】:

我们可以通过使用 toupper() 或 tolower() 将两个字符转换为大写或小写字符来满足您的要求。

示例:

#include <stdio.h>
#include <ctype.h> //For tolower()

int main()
{
    char str1[]="Time", str2[]="time";
    /*
     * Just for an example i am comparing the first char
     * from 2 different strings.
     */
    if(tolower(str1[0]) ==tolower(str2[0])) {
        printf("Char's are equal\n");
    }
    else {
        printf("Char's are not equal");
    }
    return 0;
}

输出:

字符是相等的

【讨论】:

  • 你有两个字符串,但你只比较它们的第一个字符。不应该有循环吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多