一、实验目的
根据s按照字典顺序小于、等于或大于t的结果分别返回负整数、0或正整数
二、实验内容
通过一系列的处理达成实验目的
三、实验环境
基于macOS Big Sur版本11.1的Xcode编译器
MacBook Pro (16-inch, 2019)
处理器2.6GHz六核Intel Core i7
内存16GB 2667MHz DDR4
图形卡Intel UHD Graphics 630 1536 MB
四、操作方法和实验步骤
[1]思考是否需要调用特殊函数库
[2]构建子函数
[3]构建主函数
[4]调试程序
五、程序具体实现
#include<stdio.h> #include<string.h> //包含strcmp函数的头文件 int main(void) { //定义后使用 char *a="app"; char *b="APP"; char *c="App"; printf("%d\t%d\n",strcmp(a,b),strcmp(b,a)); //注意strcmp函数返回int类型,不是字符串或者字符类型,转换字符使用%d //直接用字符串进行比较 printf("%d\n",strcmp("app","App")); printf("%d\n",strcmp("App","app")); printf("%d\n",strcmp("app","app")); return 0; } //strcmp函数具体解释,因为前文使用了包含strcmp的函数库string.h,所以不需要重复定义,防止出现类型错误的提示 /* int strcmp(char *s, char *t) { for ( ; *s == *t; s++, t++) if (*s == '\0') return 0; return *s - *t; } */
六、测试结果及讨论
strcmp(s1,s2)功能:比较字符串s1和s2,两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。
当s1<s2时,返回为负数;当s1==s2时,返回值= 0;当s1>s2时,返回正数。
为什么有的strcmp函数返回的是1、0、-1,而有的返回的是ascii码之差呢?
回复:估计和具体的编译器有关毕竟c只是定义了一种基本的规则.
七、实验心得
strcmp是 string compare的缩写,即“字符串比较”。他的原型是:
#include<string.h>
int strcmp(const char *s1, const char *s2);
功能是比较 s1和s2所指向的字符数组中的字符串,返回一个int型值。s1和s2可以是字符数组名或者字符指针变量名。