今天进一步探究昨天学习的strcmp()函数:
昨天学习strcmp()函数时提到了,当两个字符串相同时,输出0,不相同时,输出非零,那么当两个字符串不同时,具体会输出什么非零值呢?于是写了一个程序进行探究:
#include#include int main() { printf("strcmp("A","B") = "); printf("%dn", strcmp("A", "B")); printf("strcmp("B","A") = "); printf("%dn", strcmp("B", "A")); printf("strcmp("a","b") = "); printf("%dn", strcmp("a", "b")); return 0; }
从程序,以及运行结果可以看出,对于A,B和a,b的比较结果都是输出-1,而B,A输出的是1,结合书中内容可以得出结论:当在字母表中第一个字符串位于第二个字符串的前面,则返回负数,反之则返回正数。
在程序运行的某些情况中,使用strcmp()函数对比字符串时,可能并不需要对比整个字符串,也许只需要比较头几个字符是否相同,这时为了提高程序运行效率,同时完成任务,我们可以使用C语言提供的strncmp()函数,其中加入第三个参数,能够限定函数对比的字符数。
#include#include 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; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)