gpt4 book ai didi

c - 为什么 strcmp 对完整填充的字符数组给出不同的响应?

转载 作者:行者123 更新时间:2023-12-04 10:48:32 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <string.h>
void main()
{
char a[10]="123456789";
char b[10]="123456789";
int d;
d=strcmp(a,b);

printf("\nstrcmp(a,b) %d", (strcmp(a,b)==0) ? 0:1);
printf("compare Value %d",d);
}

输出:

strcmp(a,b) 0
compare value 0

如果相同的程序在将数组增加到完整值时响应不同,我的意思是 10 个字符。那个时候的值是不同的。

#include <stdio.h>
#include <string.h>
void main()
{
char a[10]="1234567890";
char b[10]="1234567890";
int d;
d=strcmp(a,b);

printf("\nstrcmp(a,b) %d", (strcmp(a,b)==0) ? 0:1);
printf("compare Value %d",d);
}

输出:

strcmp(a,b) 1
compare value -175

当字符串达到数组的完整值时,为什么 strcmp 的响应不同?

最佳答案

第二个代码片段的行为未定义。

当您编写 char a[10]="1234567890"; 时,没有空间容纳 strcmp 所依赖的 null 终止符。这会导致 strcmp 超出数组。

一种补救方法是使用 strncmp

另一种方法是使用 char a[]="1234567890"; (同样调整 b)并让编译器计算出数组长度,在本例中为 11。

关于c - 为什么 strcmp 对完整填充的字符数组给出不同的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34944251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com