c语言编写函数实现两个字符串的比较,即自己写一个strcmp函数。函数原型为int strcmp(char *p1,char *p2);两个字符串相等时返回0,不相等返回两个字符串第一个不相等字符ASCII码之差。(指针实现)
时间: 2023-11-27 15:52:39 浏览: 192
下面是一个简单的 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。
相关问题
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语言编写一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为“int strcmp(char* p1,char* p2);”设p1指向字符串s1,p2指向字符串s2,要求当s1==s2时,函数返回值为0;若s1≠s2,则返回二者中第一个不相同字符的ASCII码差值(如"BOY"与"BAD"的第二个字母不同,'O'与'A'之差为79-65=14)。 输入格式: 首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据输入两个字符串s和字符串t。其中s、t的长度不超过10,且只包含英文字母。 输出格式: 对于每组测试,输出调用自己编写的strcmp函数的比较结果。
以下是使用 C 语言编写的 `strcmp` 函数的实现:
```c
#include <stdio.h>
int strcmp(char* p1, char* p2) {
while (*p1 != '\0' && *p1 == *p2) {
p1++;
p2++;
}
return *p1 - *p2;
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
char s[11], t[11];
scanf("%s%s", s, t);
printf("%d\n", strcmp(s, t));
}
return 0;
}
```
首先,`strcmp` 函数通过循环遍历两个字符串,直到遇到不相等的字符或者其中一个字符串结束。在循环过程中,每次比较两个指针所指向的字符,如果相等则将指针向后移动,继续比较下一个字符。如果遇到不相等的字符,则函数返回这两个字符的 ASCII 码差值。
在主函数中,首先输入测试数据组数 `T`,然后依次输入每组测试数据,调用 `strcmp` 函数比较两个字符串,并输出比较结果。
阅读全文