不使用strcmp函数,怎样用指针比较两个字符串的大小,用for循环
时间: 2023-06-12 22:05:59 浏览: 131
可以通过比较两个字符串的ASCII码值来判断大小关系,可以按照以下步骤进行比较:
1. 定义两个指针指向要比较的两个字符串的首字母。
2. 使用for循环遍历两个字符串,每次比较指针所指向的字符的ASCII码值。
3. 如果两个字符的ASCII码值相等,则比较下一个字符;如果不相等,则返回它们的ASCII码值之差大小关系。
4. 如果遍历完其中一个字符串后,另一个字符串还有剩余字符,则返回它们长度之差大小关系。
下面是一个示例代码:
```c
int string_compare(const char* str1, const char* str2) {
const char* p1 = str1;
const char* p2 = str2;
for (; *p1 && *p2; ++p1, ++p2) {
if (*p1 != *p2) {
return (*p1 > *p2) ? 1 : -1;
}
}
return (*p1) ? 1 : ((*p2) ? -1 : 0);
}
```
在这个示例中,我们使用指针p1和p2来指向两个要比较的字符串的首字母,并在for循环中遍历两个字符串。如果两个字符不相等,则返回它们的ASCII码值之差大小关系。如果遍历完其中一个字符串后,另一个字符串还有剩余字符,则返回它们长度之差大小关系。
相关问题
不使用strcmp函数,怎样用指针比较两个字符串的大小,用字符数组,for循环
可以通过比较每个字符的ASCII码值来判断字符串的大小,可以使用指针和字符数组结合使用,具体实现如下:
```c
#include <stdio.h>
int main() {
char str1[] = "hello";
char str2[] = "world";
char *ptr1 = str1;
char *ptr2 = str2;
int i;
for (i = 0; *(ptr1 + i) != '\0' && *(ptr2 + i) != '\0'; i++) {
if (*(ptr1 + i) > *(ptr2 + i)) {
printf("str1 is bigger than str2\n");
break;
} else if (*(ptr1 + i) < *(ptr2 + i)) {
printf("str2 is bigger than str1\n");
break;
}
}
if (*(ptr1 + i) == '\0' && *(ptr2 + i) == '\0') {
printf("str1 and str2 are equal\n");
} else if (*(ptr1 + i) == '\0') {
printf("str2 is bigger than str1\n");
} else if (*(ptr2 + i) == '\0') {
printf("str1 is bigger than str2\n");
}
return 0;
}
```
在上面的代码中,我们首先定义了两个字符数组`str1`和`str2`,然后定义了两个指针`ptr1`和`ptr2`,分别指向这两个字符数组的首地址。接着,我们使用for循环遍历两个字符串,同时比较每个字符的ASCII码值,如果当前字符的ASCII码值不相等,则可以直接确定两个字符串的大小关系,输出相应的结果。如果两个字符串的所有字符都相等,则可以判断它们相等。如果第一个字符串遍历完了,而第二个字符串还有剩余字符,则第二个字符串更大;如果第二个字符串遍历完了,而第一个字符串还有剩余字符,则第一个字符串更大。
不使用strcmp函数,怎样用指针比较两个字符串的大小
可以使用指针逐个比较两个字符串的字符,直到出现不相等的字符或者其中一个字符串结束。如果出现不相等的字符,则比较它们的ASCII码大小,谁大谁就排在后面,如果其中一个字符串先结束,则长度较短的字符串排在前面。
示例代码如下:
```c
#include <stdio.h>
int str_compare(char *s1, char *s2) {
while (*s1 && *s2) {
if (*s1 != *s2) {
return (*s1 > *s2) ? 1 : -1;
}
s1++;
s2++;
}
if (*s1) {
return 1;
} else if (*s2) {
return -1;
} else {
return 0;
}
}
int main() {
char s1[] = "hello";
char s2[] = "world";
int result = str_compare(s1, s2);
if (result > 0) {
printf("%s is greater than %s\n", s1, s2);
} else if (result < 0) {
printf("%s is less than %s\n", s1, s2);
} else {
printf("%s is equal to %s\n", s1, s2);
}
return 0;
}
```
输出结果为:
```
hello is less than world
```