c语言编写函数实现两个字符串的比较,即自己写一个strcmp函数。函数原型为int strcmp(char *p1,char *p2);两个字符串相等时返回0,不相等返回两个字符串第一个不相等字符ASCII码之差。(指针实现)
时间: 2024-01-21 22:20:11 浏览: 55
以下是一个用指针实现的strcmp函数的示例代码:
```c
int strcmp(char *p1, char *p2) {
while (*p1 == *p2) {
if (*p1 == '\0') // 字符串相等
return 0;
p1++;
p2++;
}
return *p1 - *p2; // 返回第一个不相等字符ASCII码之差
}
```
该函数使用了两个指针p1和p2,分别指向两个字符串的首字符。在while循环中,比较两个指针所指向的字符是否相等,如果相等,将两个指针都向后移动一位;如果不相等,返回它们的ASCII码差值。如果循环结束后仍然没有找到不同的字符,则说明两个字符串相等,返回0。
相关问题
6. 用一个函数实现两个字符串的比较, 即自己编写一个 strcmp函数, 函数原型为 int strcmp(chqr∗p1,char∗p2);设P 1指向字符串S 1, P 2指向字符串S 2.
在C语言中,你可以通过逐个字符比较的方式来实现一个简单的strcmp函数,类似于C标准库中的功能。下面是`strcmp`函数的一个基本实现:
```c
#include <stdio.h> // 仅用于演示,实际使用不需要包含stdio
int strcmp(char* p1, char* p2) {
while (*p1 != '\0' && *p2 != '\0') { // 比较直到遇到空字符('\0')
if (*p1 > *p2) {
return 1; // 如果第一个字符较大,返回正数表示p1大于p2
} else if (*p1 < *p2) {
return -1; // 如果第一个字符较小,返回负数表示p1小于p2
} else {
p1++; // 同样大小,继续比较下一个字符
p2++;
}
}
// 如果到达某个字符串结束而另一个未结束,则未结束的那个更长
if (*p1 == '\0' && *p2 != '\0') {
return -1;
} else if (*p1 != '\0' && *p2 == '\0') {
return 1;
} else {
return 0; // 如果两个字符串完全一样,返回0
}
}
【用c语言编写程序】请用指针编程实现:写一个函数,实现两个字符串的比较。即自己写一个strcmpa函数,函数原型为:int strcmpa(char *p1,char *p2),若两个字符串相等则返回0,否则返回这两个字符串第一个不同字符的ASCII码差值。
在C语言中,你可以使用指针来实现字符串的比较功能,类似于标准库中的`strcmp()`函数。这里是一个简单的`strcmpa()`函数实现:
```c
#include <stdio.h> // 为了使用printf()进行测试
// 函数声明
int strcmpa(char *p1, char *p2);
// 主要函数实现
int strcmpa(char *p1, char *p2) {
int diff = 0;
while (*p1 != '\0' && *p2 != '\0') { // 遍历直到遇到空字符(字符串结束)
if (*p1 != *p2) {
diff = (int)(*p1 - *p2); // 计算ASCII码差值
break; // 如果找到不同字符,就跳出循环
}
p1++; // 移动指针到下一个字符
p2++;
}
// 如果一个字符串已经结束而另一个未结束,剩余部分被视为较大的字符串
if (*p1 == '\0' && *p2 != '\0')
return -diff; // 返回负数表示第二个字符串较大
else if (*p2 == '\0' && *p1 != '\0')
return diff; // 否则返回正数表示第一个字符串较大
else
return 0; // 若两者都已结束,说明相等
}
// 测试函数
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = strcmpa(str1, str2);
if (result == 0)
printf("The strings are equal.\n");
else
printf("The first differing character has an ASCII code difference of %d.\n", result);
return 0;
}
```
阅读全文