C语言:这段程序我有些小问题~

来源:百度知道 编辑:UC知道 时间:2024/06/24 15:28:15
#include <stdio.h>
char * myGets( char * str ) ;
int myStrcmp( char * str1, char * str2 );
main( )
{
char tar1[50],tar2[50];
int result;
printf("请分别输入两个字符串:\n");
gets(tar1);
gets(tar2);
result = myStrcmp( tar1 , tar2 );

if ( result > 0 )
printf("字符串tar1大于字符串tar2\n");
if ( result < 0 )
printf("字符串tar1小于字符串tar2\n");
if ( result == 0 )
printf("字符串tar1等于字符串tar2\n");
}

int myStrcmp(char * str1,char * str2)
{
while (*str1 == *str2 && *str1 != '\0')
{
str1++;
str2++;
}
return *str1 - *str2 ;
}

最后一步的:return *str1 - *str2 ;中
的*str1 - *str2是什么意思?
假设我那两个字符是a和A那就是直接a-A得32了吗?
还是‘a’-‘A’呢?

接过返回两个字符串中第一个不相同的字符的二进制值的差。例如输入a和A,则结果就是32;输入abdc和abcd,则返回1。

就是返回那两个字符的ASC的差值。小写比大写大。

return *str1 - *str2 是
函数的返回值,指的是两个字符的比较。
直接a A就可以了