c - 如何比较C中的2个字符

标签 c char

<分区>

为什么这不起作用? months[5] == name 是相等的。 months[5]Jun 并且 nameJunif 永远不会执行。 ..

 int getMonthNum(char * name){
    char *months[12] ={"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
    char *pointertoarray = &months;
    int i;
        for(i = 1; i <= 12; i++){
            if(months[5] == name){
                return i;
            }
        }
    return i;
    }

最佳答案

使用 strcmp 否则它会比较指针。

int getMonthNum(char * name){
    char *months[12] ={"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
//char *pointertoarray = &months;
    int i;
        for(i = 0; i < 12; i++){
            if( strcmp(months[i], name)==0){
                return i;
            }   
        }   
    return i;
    }   

http://www.tutorialspoint.com/c_standard_library/c_function_strcmp.htm

关于c - 如何比较C中的2个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31095026/

相关文章:

c++ - int8_t 和 char : converts between pointers to integer types with different sign - but it doesn't

c - 为什么编译器在使用结构变量时显示 "Type specifier missing"

c - linux上实现链表的C程序从文件读取数据出错

c - 为什么我在编译这段代码时会出错以及如何修复它们?

c - 当我将 scanf 放入 char 类型的 switch case 中时,它会完全跳过它,为什么?

C++如何将char作为数字而不是字符

将字符串复制到C中的字符指针

c - 在链表中的另一个节点之前插入一个节点时遇到问题?

检查某个项目是否在 C 数组中

c - 在两者之间跳过一些 scanf