一.介绍
不使用函数,比较字符串的大小
二.代码
#include<stdio.h>
void test01()//字符串的比较
{
char buf1[128]="hello";
char buf2[128]="horkd";
int i = 0;
int flag = 0;
while( !(flag = buf1[i]-buf2[i]) && (buf1[i] != '\0') && ++i);
//0为假,当flag为0时则!0为真,则接着循环,如果为其他数值,则为假,则跳出循环
printf("i=%d\n",i);
printf("flag=%d\n",flag);
if(flag>0)
{
printf("%s 大于 %s\n",buf1,buf2);
}
else if(flag<0)
{
printf("%s 小于 %s\n",buf1,buf2);
}
else if(flag==0)
{
printf("%s 等于 %s\n",buf1,buf2);
}
}
int main(int argc,char *argv[])
{
test01();
return 0;
}
三.详细解析
-
test01
函数定义了一个字符串比较的功能。在函数内部,定义了两个字符数组buf1
和buf2
分别用于存储待比较的字符串。 -
i
和flag
是用于控制循环和比较结果的变量。i
初始化为 0,flag
初始化为 0。 -
在
while
循环中,首先判断!(flag = buf1[i] - buf2[i])
,即判断buf1[i]
和buf2[i]
是否相等。如果相等,则flag
的值为 0,继续循环。如果不相等,则flag
的值为非零,跳出循环。 -
在循环中,还判断
buf1[i]
是否为\0
(字符串的结尾标志),如果不是,则i
自增。 -
循环结束后,打印出比较结果。
i
表示比较到第几个字符时不相等,flag
表示最后的比较结果。 -
最后,根据
flag
的值,通过一系列的if-else
判断语句打印出比较结果,即判断哪个字符串大于、小于或等于另一个字符串。 -
main
函数调用了test01
函数,并返回 0。
总体来说,这段代码实现了简单的字符串比较功能,通过逐个比较字符并根据比较结果进行判断,输出比较结果。