编写一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为“int strcmp(char* p1,char* p2);”设p1指向字符串s1,p2指向字符串s2,要求当s1==s2时,函数返回值为0;若s1≠s2,则返回二者中第一个不相同字符的ASCII码差值
时间: 2023-11-28 17:48:08 浏览: 114
以下是实现strcmp函数的代码:
```c++
int strcmp(char* p1, char* p2) {
while (*p1 == *p2) {
if (*p1 == '\0') {
return 0;
}
p1++;
p2++;
}
return *p1 - *p2;
}
```
该函数的实现思路是通过循环比较两个字符串中对应位置的字符是否相等,如果相等则继续比较下一个位置,直到遇到不相等的位置或者遇到其中一个字符串的结尾。如果两个字符串完全相等,则返回0;否则返回第一个不相等字符的ASCII码差值。
相关问题
写一函数,实现两个字符串的比较,即自己写一个strcmp函数,函数原型为int strcmp(char*p1,char*p2)
好的,我可以为您写一个strcmp函数实现两个字符串的比较。以下是函数的代码:
```
int strcmp(char *p1, char *p2) {
while (*p1 == *p2) {
if (*p1 == '\0') {
return 0;
}
p1++;
p2++;
}
return (*p1 - *p2);
}
```
这个函数的功能与系统自带的strcmp函数相同,都是比较两个字符串是否相等。如果字符串相等,返回值为0;如果字符串不相等,返回值为它们第一个不同字符的ASCII码差值。
请注意,这个函数可能不是最优的实现方式,但它可以完成您的要求。如果您有更好的实现方式,欢迎分享给我!
编写函数实现两个字符串的比较,即自己写一个strcmp函数。函数原型为int strcmp(char *p1,char *p2);两个字符串相等时返回0,不相等返回两个字符串第一个不相等字符ASCII码之差。(指针实现)
好的,我可以为您实现一个自定义的strcmp函数。以下是使用指针实现的strcmp函数:
```c
int strcmp(char *p1, char *p2) {
while(*p1 && (*p1 == *p2)) {
p1++;
p2++;
}
return *(unsigned char*)p1 - *(unsigned char*)p2;
}
```
这个函数的工作原理如下:
1. 我们使用指针p1和p2分别指向两个输入字符串的起始位置。
2. 在while循环中,我们同时遍历两个字符串,直到遇到不同的字符或到达字符串末尾。
3. 如果*p1和*p2不相同,或者其中一个字符串已经结束,循环就会终止。
4. 最后,我们返回两个字符的差值。如果两个字符串相等,差值为0;如果不相等,差值为第一个不相等字符的ASCII码之差。
5. 我们使用(unsigned char*)进行类型转换,以确保比较的是无符号字符,这与标准strcmp的行为一致。
使用这个函数的方法:
```c
char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
if(result == 0) {
printf("两个字符串相等\n");
} else if(result > 0) {
printf("第一个字符串大于第二个字符串\n");
} else {
printf("第一个字符串小于第二个字符串\n");
}
```
这个自定义的strcmp函数提供了与标准库函数strcmp相同的功能,但它展示了字符串比较的基本原理。
阅读全文
相关推荐











