今天进一步探究昨天学习的strcmp()函数:
? ? ? ??昨天学习strcmp()函数时提到了,当两个字符串相同时,输出0,不相同时,输出非零,那么当两个字符串不同时,具体会输出什么非零值呢?于是写了一个程序进行探究:
#include<stdio.h>
#include<string.h>
int main()
{
printf("strcmp(\"A\",\"B\") = ");
printf("%d\n", strcmp("A", "B"));
printf("strcmp(\"B\",\"A\") = ");
printf("%d\n", strcmp("B", "A"));
printf("strcmp(\"a\",\"b\") = ");
printf("%d\n", strcmp("a", "b"));
return 0;
}
? ? ? ? 从程序,以及运行结果可以看出,对于A,B和a,b的比较结果都是输出-1,而B,A输出的是1,结合书中内容可以得出结论:当在字母表中第一个字符串位于第二个字符串的前面,则返回负数,反之则返回正数。
? ? ? ? 在程序运行的某些情况中,使用strcmp()函数对比字符串时,可能并不需要对比整个字符串,也许只需要比较头几个字符是否相同,这时为了提高程序运行效率,同时完成任务,我们可以使用C语言提供的strncmp()函数,其中加入第三个参数,能够限定函数对比的字符数。
#include<stdio.h>
#include<string.h>
int main()
{
char qq[] = "TenXun hello ";
char Vchat[] = "TenXun gone";
if (strncmp(qq, Vchat, 6) == 0) {
printf("Yes,they are the same!");
}
else
printf("Wrong!wrong!wrong!");
return 0;
}
?
?
|