c - 在c编程中使用strcmp中的整数差

标签 c

我有以下程序

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

int main()
{
    char text1[30],text2[30];
    int diff;
    puts("Enter text1:");
    fgets(text1,30,stdin);
    puts("Enter text2:");
    fgets(text2,30,stdin);
    diff=strcmp(text1,text2);
    printf("Difference between %s and %s is %d",text1,text2,diff);
}

如果我将text1作为输入文本,将text2作为差异文本,那么差异应该是5,但是对于不同的输入我得到的是1,我不确定我哪里出错了。

最佳答案

C 标准中 strcmp 的规范仅表示它“返回大于、等于或小于零的整数,相应地与 s1 指向的字符串相同” 大于、等于或小于 s2 指向的字符串” ( C 2011 N1570 7.24.4.2 3, C 2018 同上)。

您不能依赖更具体的行为,例如返回特定值,除非您的 C 实现有额外的保证。

关于c - 在c编程中使用strcmp中的整数差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18254071/

相关文章:

c - 内存覆盖问题

c - 多次使用 socketpair 函数的文件描述符时出现 "Bad file descriptor"错误

c++ - JDK9 Hotspot debug using gdb, causing SIGSEGV Segmentation fault in eclipse/Ubuntu 终端

c - 使用 DirectSound 播放立体声 PCM

c - Linux:从一个线程调用 wait() 是否会导致所有其他线程也进入休眠状态?

python - 使用 cython 从 c 调用 python 代码

c++ - 有人可以告诉我这是如何在 main() 中实现的吗? (关于void指针的问题)

c - 程序总是输出0值

c语言如果输入错误号码再次询问用户

c - 删除双向链表中的链接