我一直在寻找答案.我要做出一系列的我自己的字符串函数一样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 …Run Code Online (Sandbox Code Playgroud) 我了解,如果您在strcmp中有“ cat”(字符串1)和“ dog”(string2)(这是一个C问题),则strcmp的返回值将小于0(因为“ cat”在词法上小于“ dog” ')。
但是,如果发生这种情况,我不确定strcmp会发生什么:
string1: 'dog'
string2: 'dog2'.
Run Code Online (Sandbox Code Playgroud)
strcmp会返回什么?小于零,零或大于?对于上下文,我正在尝试编写一个比较器函数来比较字符串,并希望考虑以相同字符开头的字符串。一个字符串可能具有扩展名(例如上例中的“ dog2”中的“ 2”)。
编辑:这不是重复的问题。据称这与之类似的问题是询问返回类型代表什么-我是说,当字符串在某一点上相同之前,但其中一个停止,而另一个继续时,会发生什么。