C语言编程-用数组方法编写函数strcmp,比较两个字符串的大小。

让我看看你发来的代码...那是用C 编写的字符串比较函数,对吧?
我注意到你这里有些不对劲。
首先,fun函数的返回值是char,但它返回s或t,并且实际上没有执行字符串比较。
通常,此类函数将返回一个整数,例如 0 表示相等,非零表示不相等,或者比较结果。

此外,不再推荐使用get函数,因为它容易导致缓冲区溢出。
应该使用 fgets 代替。

此外,不建议使用 system("suspend")。
它调用操作系统命令来挂起程序,并且不是 C 标准库的一部分。

如果想进行简单的字符串比较,比如比较两个字符串是否相同,可以参考下面的代码:
c 包含 包括
char fun(char s, char t) { if (strcmp(s, t) == 0) { 返回 s; } 否则{ 返回t; }
int main() { 字符a[2 0]、b[1 0]、p、q; printf("请输入第一个字符串:"); fgets(a, sizeof(a), stdin); a[strcspn(a, "\n")] = 0; // 删除末尾换行符
printf("输入第二个字符串:"); fgets(b, sizeof(b), stdin); b[strcspn(b, "\n")] = 0; // 删除末尾换行符
printf("%s\n", fun(a, b)); // 打印结果
return 0;
这使得代码更安全并且更符合标准。
你可以尝试一下。

字符数组可以直接使用 strcmp(a,b)函数比较大小吗?印象中好像只有字符串可以直接用的。下面是例子

上周,我的朋友写了一个程序,使用 char[] 和 charb[] 来存储字符串。
他尝试了strcmp(a, b),发现比较了整个数组中的字符串。
这很有趣,但是后来他们发现a和b实际上是指向字符串的指针,而不是字符串。
算了,你自己想办法吧。

strcmp函数用法

严格来说,strcmp 通过简单地检查两个字符串中哪个更大来返回正数或负数。
我们先来说说最重要的事情。
根据 ASCII 码逐个字符进行比较。
例如,strcmp("A""B") 返回负数,因为 ASCII 代码“A”小于“B”。
去年我们做那个项目的时候,我的一个同学把strcmp和strcmp(“apple”,“apple”)写反了。
结果,整个排序逻辑崩溃了——用行话来说,这被称为雪崩效应。
事实上,前面的一点延迟让一切都恢复了。
另一个点与第一个不同的字符或字符串的末尾进行比较。
例如,strcmp("computer", "compare") 返回正数,因为第四个字符“u”大于“a”。
还有另一个重要的细节。
它区分大小写。
'a' 大于 'Z',因此 strcmp("a", "Z") 返回负数。

一开始以为返回值不一样,后来发现不对。
标准没有规定具体数值,只规定了符号。
等等,还有别的事。
比较非字符串参数会导致奇怪的行为,例如 strcmp(1 2 3 , "abc") - 老实说非常令人困惑。
很多人不注意这一点。

建议不要使用strcmp进行模糊比较。
例如,如果 (strcmp(a,b)=1 ) 是无效语法,则应使用 if(strcmp(a,b)!=0)。
你认为使用strcmp进行字典排序安全吗?