c语言编程:使用指针,编写一个字符串比较的函数,函数声明为:int strcmp(char *p1,char *p2);
时间: 2024-03-03 12:48:05 浏览: 17
好的,以下是使用指针编写字符串比较函数的代码:
```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。
希望对你有帮助!
相关问题
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),实现两个字符串的比较。当字符串1=字符串2时,返回0;当字符串1!=字符串2时,返回它们两者第一个不同字符的ASCII码的差值。
```c
int strcmp(char* p1, char* p2) {
while (*p1 && *p2 && (*p1 == *p2)) {
p1++;
p2++;
}
return *p1 - *p2;
}
```
解释:
该函数使用指针遍历两个字符串,判断是否相同,如果不同则返回它们两者第一个不同字符的ASCII码的差值。如果两个字符串长度不同,且前面的字符都相同,那么当其中一个字符串到达结尾时,另一个字符串还有字符未遍历,此时会出现*p1或*p2为0的情况,因此while循环中首先判断*p1和*p2是否为0。如果两个字符相等,则指针向后移动,继续比较下一个字符。如果两个字符不相等,则返回它们两者第一个不同字符的ASCII码的差值(即*p1-*p2)。如果两个字符串完全相同,则while循环结束后,返回0。