【发布时间】:2012-08-21 14:34:46
【问题描述】:
我一直在寻找答案。我要自己做一系列的字符串函数,比如my_strcmp()、my_strcat()等。
strcmp() 是否通过两个字符数组的每个索引工作,如果 ASCII 值在两个字符串的相同索引处较小,则该字符串按字母顺序较大,因此返回 0 或 1 或 2?我想我问的是,它是否使用字符的 ASCII 值来返回这些结果?
任何帮助将不胜感激。
[修订]
好的,所以我想出了这个……它适用于所有情况,除非第二个字符串大于第一个字符串。
有什么建议吗?
int my_strcmp(char s1[], char s2[])
{
int i = 0;
while ( s1[i] != '\0' )
{
if( s2[i] == '\0' ) { return 1; }
else if( s1[i] < s2[i] ) { return -1; }
else if( s1[i] > s2[i] ) { return 1; }
i++;
}
return 0;
}
int main (int argc, char *argv[])
{
int result = my_strcmp(argv[1], argv[2]);
printf("Value: %d \n", result);
return 0;
}
【问题讨论】:
-
你为什么不只看一个实现(glibc 或任何其他 - 搜索“strcmp 源代码”)? (对于返回值和规范,请阅读手册页或 POSIX。)
-
@DizzyChamp
strcmp使用lexicographical order