gpt4 book ai didi

C中比较两个char数组的内容

转载 作者:行者123 更新时间:2023-11-30 14:57:05 26 4
gpt4 key购买 nike

当我尝试比较两个字符数组的内容时遇到问题。有时如果字符串小于数组的实际大小,则其中没有 '\0' 序列,但经常存在意外字符(在 xcode 调试中存在 '\x01' 字符,并且在我使用的控制循环中要检查阵列的一个存储单元是否与另一个相同,它是不一样的)。因此,为了克服这个问题,我决定强制用户将数组内容精确地写入数组大小(-1):例如。 array[3],用户写“hi”(不带“”)。所以我想知道是否有一种方法可以在不完全填充数组的情况下比较两个字符串(我不是在谈论长度而是内容),以便通过一个简单的循环来比较此处输入代码的内容这两个数组。 (我正在考虑用\0 初始化 vector ,但我不知道是否会出现问题)感谢您的回答

这是代码示例

}while(sent !=1);


for(contatore=0; contatore<MAXNOME; contatore++){

if(UserName[contatore] == persona.username[contatore]){

controlloUsr++;
}

}


for(contatore=0; contatore<MAXNOME; contatore++){

if(password[contatore] == persona.password[contatore]){

controlloPsw++;
}

}


if(controlloUsr == MAXNOME && controlloPsw == MAXPSW){

return 1;

} else {

return 0;
}

最佳答案

我不确定这是否是你要问的,但是如果不给代码一个停止序列,比如\0,就没有办法浏览 C 中的字符数组,否则你将永远浏览它(好吧,直到出现严重的段错误...)

您可以为此编写自己的 strncmp 函数,例如:

int my_strncmp(char *str1, char *str2, size_t max, char c)
{
size_t n = 0;
while (n < max)
{
if ((str1[n] != str2[n]) || (str1[n] == c) || (str2[n] == c))
return 0;
n++;
}
return 1;
}

如果您的 char c 满足,或者字符串不同,则返回 0;如果在 max char 之前字符串相同,则返回 1。只需确保满足两个条件之一,否则您的代码将陷入段错误/具有未定义的行为,因为您将浏览允许的内存范围。

关于C中比较两个char数组的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44160718/

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