用指针法编写函数int cmpstr(char *p,char *q),比较两个字符串大小(不要用strcmp函数)。
时间: 2023-06-16 22:04:23 浏览: 107
可以使用指针来比较两个字符串的大小,具体实现如下:
```C
int cmpstr(char *p, char *q) {
while (*p == *q && *p != '\0') { // 指针指向的字符相等
p++;
q++;
}
return (*p - *q); // 返回两个指针指向字符的差值
}
```
该函数首先通过 while 循环比较两个指针所指向字符是否相等,如果相等则继续向后比较,直到两个指针所指向的字符不相等或者到达字符串结尾。最后返回两个指针指向字符的差值,如果差值为 0,则两个字符串相等;如果差值小于 0,则第一个字符串小于第二个字符串;如果差值大于 0,则第一个字符串大于第二个字符串。
需要注意的是,在比较两个字符时,需要判断字符是否为字符串结尾符 '\0'。
相关问题
用指针法编写函数int cmpstr(char *p,char *q),比较两个字符串大小(不要用strcmp函数)
可以使用指针法遍历两个字符串,逐个比较字符的ASCII码值大小,实现比较字符串大小的功能。以下是示例代码:
```c
int cmpstr(char *p, char *q) {
while (*p && *q) {
if (*p > *q) {
return 1;
} else if (*p < *q) {
return -1;
}
p++;
q++;
}
if (*p == '\0' && *q == '\0') {
return 0;
} else if (*p == '\0') {
return -1;
} else {
return 1;
}
}
```
函数中,首先使用while循环遍历两个字符串,只要两个字符串都没有遍历到结尾,就继续比较字符的大小。如果p所指向的字符大于q所指向的字符,说明p字符串比q字符串大,返回1;如果p所指向的字符小于q所指向的字符,说明p字符串比q字符串小,返回-1。如果两个字符相等,则继续比较下一个字符。
当循环结束后,如果p和q都遍历到了结尾,说明两个字符串相等,返回0;如果p遍历到了结尾而q还没有遍历到结尾,说明p字符串比q字符串小,返回-1;如果q遍历到了结尾而p还没有遍历到结尾,说明p字符串比q字符串大,返回1。
输入2个字符串,每个字符串的长度均不超过80字符,用自己实现的cmpstr()函数完成这两个字符串的大小比较,cmpstr()函数的功能和字符串比较函数strcmp()的功能相同。
好的,我可以帮你解决这个问题。你可以参考下面的代码实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int cmpstr(char* s1, char* s2) {
int len1 = strlen(s1), len2 = strlen(s2);
int len = min(len1, len2);
for (int i = 0; i < len; i++) {
if (s1[i] < s2[i]) return -1;
else if (s1[i] > s2[i]) return 1;
}
if (len1 < len2) return -1;
if (len1 > len2) return 1;
return 0;
}
int main() {
char s1[81], s2[81];
cin >> s1 >> s2;
cout << cmpstr(s1, s2) << endl;
return 0;
}
```
上述代码中,cmpstr() 函数首先计算两个字符串的长度,并取较小的那个长度,然后依次比较两个字符串的每个字符,直到发现不相同的字符或者比较完了较小长度的子串。如果两个字符串的长度不相等,则剩下的字符会被视为更大的字符串。最后,如果两个字符串完全相同,则返回0。在 main() 函数中,我们读入两个字符串,并输出它们的大小比较结果。
希望这个代码能够帮到你。
阅读全文