gpt4 book ai didi

c - strncmp 无法正常工作

转载 作者:行者123 更新时间:2023-11-30 21:48:10 26 4
gpt4 key购买 nike

我在使用 strncmp 时遇到问题。据我了解,理论上,如果两个字符串比较的字符相等,strncmp 应该返回 0;但是,当我进行比较时,代码行为不当并产生误报(不等于字符,仍然会产生 if 子句)。代码如下:

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

int main(){
char *frase1="some string";
char *frase2="another string";
char *frase3="some other string";

//Comparar frases desde inicio
if(strncmp(frase1, frase2, 200))printf("1<->2, 200 characters\n");
if(strncmp(frase1, frase3, 20))printf("1<->3, 20 characters\n");
if(strncmp(frase1, frase3, 4))printf("1<->3, 4 characteres\n");

return 0;
}

如果字符串相等(至少是比较的字符),则应该打印消息;如果没有,则什么也不做;所以我还是不明白为什么第一个条件成立。

有什么想法吗?

最佳答案

如果字符串相等,

strcmpstrncmp 函数将返回 0。你应该这样做:

if (strncmp(frase1, frase3, 4) == 0) ...

即:

char *str1 = "Example 1";
char *str2 = "Example 2";
char *str3 = "Some string";
char *str4 = "Example 1";

if (strncmp(str1, str2, 7) == 0) printf("YES\n"); // "Example" <-> "Example"
else printf("NO\n");

if (strncmp(str1, str3, 2) == 0) printf("YES\n"); // "Ex" <-> "So"
else printf("NO\n");

if (strcmp(str1, str4) == 0) printf("YES\n"); // "Example 1" <-> "Example 2"
else printf("NO\n");

产生YESNOYES

关于c - strncmp 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22658152/

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