c语言编写函数实现两个字符串的比较,即自己写一个strcmp函数。函数原型为int strcmp(char *p1,char *p2);两个字符串相等时返回0,不相等返回两个字符串第一个不相等字符ASCII码之差。(指针实现)完整程序
时间: 2024-01-21 18:20:12 浏览: 25
下面是一个示例程序,实现了自定义的 `strcmp` 函数:
```c
#include <stdio.h>
int strcmp(char *p1, char *p2);
int main() {
char str1[] = "hello";
char str2[] = "world";
int result = strcmp(str1, str2);
if (result == 0) {
printf("The two strings are equal.\n");
} else {
printf("The two strings are different. The ASCII difference is %d.\n", result);
}
return 0;
}
int strcmp(char *p1, char *p2) {
while (*p1 == *p2 && *p1 != '\0') {
p1++;
p2++;
}
return (*p1) - (*p2);
}
```
该函数的实现方法是:首先使用一个 while 循环,逐个比较两个字符串的字符是否相等,直到出现不相等的字符或者字符串结束符 '\0'。然后返回两个字符串第一个不相等字符的 ASCII 码值之差。
相关问题
c语言编写函数实现两个字符串的比较,即自己写一个strcmp函数。函数原型为int strcmp(char *p1,char *p2);两个字符串相等时返回0,不相等返回两个字符串第一个不相等字符ASCII码之差。(指针实现)
下面是一个简单的 strcmp 函数的实现,使用指针比较字符串中每一个字符的 ASCII 码值大小,找到第一个不相等的字符后返回它们的 ASCII 码值之差,如果两个字符串完全相同,则返回 0。
```c
int strcmp(char *p1, char *p2) {
while (*p1 && *p2) {
if (*p1 != *p2) {
return *p1 - *p2;
}
p1++;
p2++;
}
return *p1 - *p2;
}
```
在这个函数中,我们使用了 while 循环来遍历两个字符串的每一个字符,使用指针 p1 和 p2 分别指向两个字符串的第一个字符。在每次循环中,我们比较 p1 和 p2 所指向的字符的 ASCII 码值大小,如果它们不相等,则返回它们的 ASCII 码值之差。如果它们相等,则继续往下比较。
如果其中一个字符串已经比较完了(也就是指针指向了 '\0'),但另一个字符串还有剩余字符,那么我们认为剩余字符比已比较完的字符串的字符都要大,因此返回它们的 ASCII 码值之差即可。
如果两个字符串完全相同,那么 while 循环会一直执行,直到两个指针都指向了 '\0',此时函数会返回 0。
c语言编程:使用指针,编写一个字符串比较的函数,函数声明为:int strcmp(char *p1,char *p2);
好的,以下是使用指针编写字符串比较函数的代码:
```c
int strcmp(char *p1, char *p2) {
while (*p1 != '\0' && *p2 != '\0') {
if (*p1 != *p2) {
return *p1 - *p2;
}
p1++;
p2++;
}
return *p1 - *p2;
}
```
这个函数接收两个指向字符串的指针,然后进行逐字符比较。如果两个指针指向的字符相同,则继续比较下一个字符,直到遇到某个指针指向的字符为 `\0`(即字符串结束符)为止。如果在比较的过程中发现两个指针指向的字符不相同,则返回它们的 ASCII 值之差。如果两个字符串完全相同,则返回 0。
希望对你有帮助!