用指针法编写函数int cmpstr(char *p,char *q),比较两个字符串大小(不要用strcmp函数)
时间: 2023-06-16 08:04:15 浏览: 106
可以使用指针法遍历两个字符串,逐个比较字符的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)编写函数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。
阅读全文