使用指针比较两个字符串的大小
时间: 2024-01-07 18:04:14 浏览: 64
使用指针比较两个字符串的大小可以通过比较两个字符串的ASCII码值来实现。具体步骤如下:
1. 定义两个指向字符串的指针p1和p2,分别指向要比较的两个字符串。
2. 使用while循环,比较两个指针所指向的字符是否相等,如果相等则继续比较下一个字符,如果不相等则跳出循环。
3. 如果跳出循环的原因是p1所指向的字符大于p2所指向的字符,则返回它们两者第一个不同的字符的ASCII码差值,即p1所指向的字符的ASCII码减去p2所指向的字符的ASCII码。
4. 如果跳出循环的原因是p2所指向的字符大于p1所指向的字符,则返回它们两者第一个不同的字符的ASCII码差值的相反数,即p2所指向的字符的ASCII码减去p1所指向的字符的ASCII码的相反数。
5. 如果两个指针所指向的字符都相等,则返回0,表示两个字符串相等。
下面是一个示例代码:
```c++
int stringCompared(char *p1, char *p2) {
while (*p1 != '\0' && *p2 != '\0') {
if (*p1 > *p2) {
return *p1 - *p2;
} else if (*p2 > *p1) {
return -(*p2 - *p1);
}
p1++;
p2++;
}
return 0;}
```
相关问题
怎样用指针比较两个字符串的大小
可以使用strcmp函数来比较两个字符串的大小。该函数返回的值为0表示两个字符串相等,返回的值为正数表示第一个字符串大于第二个字符串,返回的值为负数表示第一个字符串小于第二个字符串。下面是使用指针和strcmp函数比较两个字符串的大小的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
int result;
printf("Enter the first string: ");
gets(str1);
printf("Enter the second string: ");
gets(str2);
result = strcmp(str1, str2);
if (result == 0) {
printf("The strings are equal.\n");
} else if (result > 0) {
printf("The first string is greater than the second string.\n");
} else {
printf("The first string is less than the second string.\n");
}
return 0;
}
```
在这个示例中,我们使用了gets函数来获取用户输入的两个字符串,然后使用strcmp函数比较两个字符串的大小,并根据比较结果输出不同的信息。
用指针比较三个字符串大小
比较三个字符串大小可以使用strcmp()函数,如果要用指针比较,可以按照以下步骤:
1. 定义一个指向字符指针的数组,存储三个字符串。
2. 通过指针比较,找出最小的字符串。
3. 将最小字符串的指针与其他两个字符串的指针逐一比较,找出最小的字符串。
下面是示例代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char *str[3] = {"abc", "defg", "hijk"};
char *min_str = str[0]; //假设第一个字符串最小
for(int i = 1; i < 3; i++)
{
if(strcmp(min_str, str[i]) > 0) //如果当前字符串比最小字符串小
min_str = str[i]; //更新最小字符串指针
}
printf("最小的字符串是:%s\n", min_str);
for(int i = 0; i < 3; i++)
{
if(str[i] != min_str) //排除最小字符串
{
if(strcmp(min_str, str[i]) > 0) //如果当前字符串比最小字符串小
min_str = str[i]; //更新最小字符串指针
}
}
printf("最小的字符串是:%s\n", min_str);
return 0;
}
```
上述代码中,我们先通过循环找出了三个字符串中最小的一个,然后再通过循环比较剩下的两个字符串,找出最小的字符串。