题目
本题是谭浩强《C程序设计课后习题》题8.17。
题目:
17. 写一函数,实现两个字符串的比较。即自己写一个strcmp函数, 函数原型为int
strcmp(char* p1, char* p2); 设p1指向字符串s1, p2指向字符串s2。要求当
s1 = s2时, 返回值为0; 若s1≠s2, 返回它们二者第1个不同字符的ASCII码差值
(如"BOY"与"BAD", 第2个字母不同, 0与A之差为79 - 65 = 14)。如果s1 > s2, 则输出正
值; 如果s1 < s2, 则输出负值。
以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj
一、解题思路
思路:
采用指针对整形数组首部和尾部逐个交换的算法,循环条件为star<end。
二、代码部分
1.引入库
代码如下(示例):
#include<stdio.h>
2.主函数部分
代码如下(示例):
int mystrcmp(char* s1[], char* s2[])
{
int ret;
char* p1 = s1;
char* p2 = s2;
while (*p1 && *p2)
{
if (*p1!=*p2)
{
ret = *p1 - *p2;//用于接收差值
break;//因为已经比较出不同了,所以可以直接退出
}
p1++; p2++;
}
if (*p1 == '\0' || *p2 == '\0')//此条语句用于针对两个字符串前半部分全部一样的情况下,从末尾进行判断,比如ab和abc。
ret = *p1 - *p2;
return ret;
}
int main()
{
char s1[32] = { 0 }, s2[32] = { 0 };
printf("请输入两个字符串:\n");
gets(s1);
gets(s2);
printf("字符串比较的结果为:%d", mystrcmp(s1, s2));
return 0;
}
三、执行结果
输出:
请输入两个字符串:
a
ab
字符串比较的结果为:-98