用指针法编写函数int cmpstr(char *p,char *q),比较两个字符串大小(不要用strcmp函数)。
时间: 2023-06-16 19:04:31 浏览: 134
可以使用指针法来实现字符串比较函数,具体实现如下:
```c
int cmpstr(char *p, char *q) {
while (*p != '\0' && *q != '\0' && *p == *q) {
p++;
q++;
}
if (*p == '\0' && *q == '\0') { // 两个字符串相等
return 0;
} else if (*p == '\0' || *p < *q) { // p字符串较短或者当前字符小于q字符串的对应字符
return -1;
} else { // p字符串较长或者当前字符大于q字符串的对应字符
return 1;
}
}
```
该函数的实现思路是,使用两个指针分别指向待比较的两个字符串的首字符,然后逐个字符比较,若两个字符相等则继续比较下一个字符,直到其中一个字符串结束或者两个字符串的当前字符不相等。如果两个字符串都结束了,则说明两个字符串相等;否则,若当前字符不相等,则返回两个字符串当前字符的大小关系(即较小的字符串在字典序中排在前面)。
相关问题
(2)编写函数cmpStr(char s1[],char s2[])比较两个字符串s1和 s2的大小。如果s1>s2,返回一个正数;s1=s2,返回0;s1<s2,返回一个负数,在主函数中调用该函数完成字符串的比较操作,并输出返回的值。 要求: ①不允许使用strcmp()函数; ②用fgets()函数在主函数中输入两个字符串; ③实现触摸屏受托人()函数,返回的正数或负数的绝对值应该是进行比较的两个字符传中相应字符的ASCII码的差值。
以下是实现要求的cmpStr函数的代码:
```c
#include <stdio.h>
int cmpStr(char s1[], char s2[]) {
int i = 0;
while (s1[i] != '\0' || s2[i] != '\0') {
if (s1[i] > s2[i]) {
return s1[i] - s2[i];
} else if (s1[i] < s2[i]) {
return s1[i] - s2[i];
} else {
i++;
}
}
return 0;
}
int main() {
char s1[100], s2[100];
printf("请输入第一个字符串:");
fgets(s1, 100, stdin);
printf("请输入第二个字符串:");
fgets(s2, 100, stdin);
int result = cmpStr(s1, s2);
printf("比较结果为:%d", result);
return 0;
}
```
在该代码中,cmpStr函数首先使用while循环遍历两个字符串,并分别比较每个字符的ASCII码值。如果两个字符不相等,则直接返回它们的差值;如果相等,则继续比较下一个字符。如果遍历完了两个字符串还没有发现不同的字符,则说明两个字符串相等,返回0即可。
在主函数中,使用fgets函数分别读入两个字符串,并调用cmpStr函数进行比较。最后输出比较结果即可。由于fgets函数会将读入的字符串末尾的换行符也读入,因此在比较过程中需要注意判断字符串是否已经结束。
编写函数cmpStr(char s1[],char s2[])比较两个字符串s1和 s2的大小。如果s1>s2,返回一个正数;s1=s2,返回0;s1<s2,返回一个负数,在主函数中调用该函数完成字符串的比较操作,并输出返回的值。
以下是实现该函数的代码:
```c
int cmpStr(char s1[], char s2[]) {
int i = 0;
while (s1[i] != '\0' && s2[i] != '\0') {
if (s1[i] > s2[i]) {
return 1;
} else if (s1[i] < s2[i]) {
return -1;
}
i++;
}
if (s1[i] == '\0' && s2[i] == '\0') {
return 0;
} else if (s1[i] == '\0') {
return -1;
} else {
return 1;
}
}
```
在主函数中可以这样调用:
```c
#include <stdio.h>
int cmpStr(char s1[], char s2[]);
int main() {
char s1[] = "hello";
char s2[] = "world";
int result = cmpStr(s1, s2);
printf("%d\n", result);
return 0;
}
```
输出结果为:1,表示s1大于s2。
阅读全文
相关推荐












