gpt4 book ai didi

C - 确定字符/字符串的字母顺序

转载 作者:行者123 更新时间:2023-11-30 18:35:18 24 4
gpt4 key购买 nike

我正在尝试编写一个函数来比较两个字符串(s1 和 s2),并按字母顺序计算 s1 是否位于 s2 字符串之前、之后或等于 s2 字符串(与读取字典的方式相同)。如果 s1 在 s2 之前,则应返回 -1。如果它等于 s2,则应返回 0。如果它出现在 s2 之后,则应返回 1。

我很难让函数正常工作 - 我似乎只能获得每个字符串中第一个字符的返回值,并且只能使用相同的大小写。感谢您提供的任何帮助。

这是到目前为止的代码:

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

int cmpstr(const char *, const char *);

int main()
{
printf("Test 1: %d\n", cmpstr( "Hello", "World"));
printf("Test 2: %d\n", cmpstr( "Hello", "Hello"));
printf("Test 3: %d\n", cmpstr( "World", "Hello"));

return 0;
}


int cmpstr(const char *s1, const char *s2)
{

/*compare corresponding string characters until null is reached*/
while(*s1 != '\0' && *s2 != '\0' )
{
if (*s1 < *s2)
{
return -1;
}
else if (*s1 > *s2)
{
return 1;
}
else
{
return 0;
s1++;
s2++;
}
}
return 0;
}

最佳答案

只需删除最后一个 else 部分并将 return 0 放在循环之外,因为只有当 if 部分else-if 部分 不为 true 时,两个字符串才相等,当它将从循环中出来并返回 0。

int cmpstr(const char *s1, const char *s2)
{

/*compare corresponding string characters until null is reached*/
while(*s1 != '\0' && *s2 != '\0' )
{
if (*s1 < *s2)
{
return -1;
}
else if (*s1 > *s2)
{
return 1;
}
s1++;
s2++;
}
return 0;
}

关于C - 确定字符/字符串的字母顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47231297/

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