c - strcmp 在我的代码中不起作用

标签 c string strcmp

<分区>

我的程序中的 strcmp 有问题。
我正在尝试按长度比较两个字符串,因此我为此使用了 strcmp() 但是当我在 if 语句中比较它们时效果不佳。

strcmp 不比较字符串的长度吗?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
    char a[30],b[30],c[30];
    strcpy(a,"computer");
    strcpy(c,"science");
    strcpy(b,a);
    puts(a);
    puts(c);
    puts(b);

    if(strcmp(a,b)==0)
        printf("a=b\n");
    if(strcmp(a,c)<0)
        printf("a<c\n");
    if(strcmp(a,c)>0)
        printf("a>c");

    strcat(a,c);
    puts(a);

    getch();
    return 0;
}

最佳答案

strcmp 按字典顺序比较字符串(对于由同一寄存器中的字母组成的字符串,与按字母顺序比较它们相同)。因此,“computer”“science” 小,而不是大,因为它按字母顺序排列较早。

如果你想比较两个字符串的长度而不是比较字符串本身,你应该使用strlen:

if(strlen(a) == strlen(b))
   printf("a=b\n");
if(strlen(a) < strlen(c))
   printf("a is shorter than c\n");
if(strlen(a) > strlen(c))
   printf("a is longer than c");

关于c - strcmp 在我的代码中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21045619/

相关文章:

c - 我使用 setjmp un longjmp 退出(状态)

c - 使用 thrift c_glib 客户端未将结构返回给客户端

c# - 如何在 C# 中将名字和姓氏的首字母大写?

c - 如何正确比较 C 中的字符串?

我可以使用 strcmp 作为 bool 值吗?

c - Linux 上是否有映射到 IP 协议(protocol)字段的标准枚举?

c - 从文件中读取一串信息并按int结果排序

javascript - 最好在转换之前将字符串转换为数组(javascript)

Java - 使用列表的特定元素

c - #define var 对 strcmp 不好吗?