写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char *p1,char *p2);设p1指向字符串s1,p2指向字符串s2。要求当s1=s2时,返回值为0;若s1!=s2,返回它们二者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14)。如果s1>s2,则输出正值;如果s1<S2,则输出负值。C++
时间: 2024-02-26 20:57:11 浏览: 86
以下是实现了要求的strcmp函数的C++代码:
```c++
int strcmp(char *p1, char *p2) {
while (*p1 == *p2 && *p1 != '\0') {
p1++;
p2++;
}
return *p1 - *p2;
}
```
该函数首先利用while循环遍历两个字符串,比较它们的每一个字符,直到找到不同的字符或者访问到字符串的结尾。如果两个字符串完全相等,则返回0;如果发现第一个不同字符的ASCII码差值,则返回它们的差值。如果s1>s2,则返回正值;如果s1<s2,则返回负值。
注意,在实现该函数时,要确保指针变量p1和p2不为空指针,并且在比较字符串时,要考虑到字符串的结尾符号'\0'。
相关问题
写一函数,实现两个字符串的比较,即自己写一个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码差值。
请注意,这个函数可能不是最优的实现方式,但它可以完成您的要求。如果您有更好的实现方式,欢迎分享给我!
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。
阅读全文