gpt4 book ai didi

java - Java to C实现中equalsIgnoreCase的建议

转载 作者:太空宇宙 更新时间:2023-11-04 01:14:49 25 4
gpt4 key购买 nike

全部,

为了提高我的 C 技能,我决定开始将各种 Java 库/库函数实现为 C 代码。这将确保每个人至少都知道我的实现的功能。这是模拟 StringequalsIgnoreCase() 的 C 源代码的链接。 Java 类:C source code .我已经测试了代码,就我的测试技能而言,它看起来不错。我的目标是尽可能多地使用基本操作和数据类型。不过,如果这里的大师们可以:

1>给我任何提高代码质量的建议
2 > 启发我任何缺失的编码标准/实践
3 > 在我的逻辑中找到错误。

最佳答案

100 行代码并不太长,无法在这里发布。

您计算字符串长度两次。在 C 语言中,计算字符串长度的过程从字符串的开头开始并沿着整个字符串运行(不一定以 1 个字节为步长)直到找到终止空字节。如果您的字符串长 2 兆字节,那么您就不必要地“走”了 4 兆字节。

<ctype.h>有两个函数tolower()toupper()宣布。您可以使用其中之一 (tolower) 而不是 extractFirstCharacterASCIIVal() .使用库函数的优点是它不会被 ASCII 锁定,甚至可以在“国际化”时使用外来字符。

您为变量(和函数)使用笨拙(非常长)的名称。例如:ch1ch2分别对文件 1 和文件 2 中的字符表现出色:-)

return 1;main 的末尾通常意味着程序出了问题。 return 0;是成功终止的惯用语。


编辑:与 tcrosley 版本比较

#include <ctype.h>
int cmpnocase(const char *s1, const char *s2) {
while (*s1 && *s2) {
if (tolower((unsigned char)*s1) != tolower((unsigned char)*s2)) break;
s1++;
s2++;
}
return (*s1 != *s2);
}

关于java - Java to C实现中equalsIgnoreCase的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4175741/

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