在c++中,利用字符指针比较字符串s1、s2的大小
时间: 2024-02-03 16:14:17 浏览: 115
可以使用C++标准库中的字符串比较函数strcmp()来比较两个字符串s1和s2的大小。具体代码如下:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char* s1 = "hello";
char* s2 = "world";
int result = strcmp(s1, s2);
if (result < 0) {
cout << "s1 is less than s2" << endl;
} else if (result > 0) {
cout << "s1 is greater than s2" << endl;
} else {
cout << "s1 is equal to s2" << endl;
}
return 0;
}
```
在这个例子中,我们定义了两个字符指针s1和s2,并使用strcmp()函数比较它们的大小。如果s1小于s2,则strcmp()返回一个负数;如果s1大于s2,则返回一个正数;如果s1等于s2,则返回0。根据返回值的不同,我们可以输出相应的结果。
相关问题
请输出一个利用指针比较字符串的s1
以下是一个利用指针比较两个字符串s1和s2的示例程序:
```c++
#include <iostream>
using namespace std;
int main() {
char s1[] = "Hello, world!";
char s2[] = "hello, world!";
char* p1 = s1;
char* p2 = s2;
while (*p1 != '\0' && *p2 != '\0') {
if (*p1 != *p2) {
cout << "Strings are not equal" << endl;
return 0;
}
p1++;
p2++;
}
if (*p1 == '\0' && *p2 == '\0') {
cout << "Strings are equal" << endl;
} else {
cout << "Strings are not equal" << endl;
}
return 0;
}
```
该程序将两个字符串s1和s2赋值给指向字符数组的指针p1和p2。然后,进入一个while循环,只要p1和p2指向的字符都不为空,就比较它们指向的字符是否相同。如果相同,就将指针向后移动一个位置,继续比较下一个字符。如果不相同,就说明两个字符串不相等,跳出循环并输出结果。最后,如果两个指针都指向字符串的末尾(即字符'\0'),则说明两个字符串相等,输出结果。
使用c++【问题描述】将字符串str中的子字符串s1替换成新的子字符串s2(字符串长度<100),如果字符串str中有多个s1,则应全部替换,最后输出被替换后的str字符串,。 【输入形式】字符串,被替换子串,替换子串 【输出形式】替换后的字符串
以下是使用 C 语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int replace(char *str, char *s1, char *s2) {
int len1 = strlen(s1);
int len2 = strlen(s2);
int count = 0;
char *p = str;
while ((p = strstr(p, s1)) != NULL) {
count++;
memmove(p + len2, p + len1, strlen(p + len1) + 1);
memcpy(p, s2, len2);
p += len2;
}
return count;
}
int main() {
char str[MAX_LEN + 1];
char s1[MAX_LEN + 1];
char s2[MAX_LEN + 1];
printf("请输入字符串:");
fgets(str, MAX_LEN + 1, stdin);
str[strlen(str) - 1] = '\0'; // 去掉换行符
printf("请输入被替换子串:");
fgets(s1, MAX_LEN + 1, stdin);
s1[strlen(s1) - 1] = '\0'; // 去掉换行符
printf("请输入替换子串:");
fgets(s2, MAX_LEN + 1, stdin);
s2[strlen(s2) - 1] = '\0'; // 去掉换行符
int count = replace(str, s1, s2);
printf("替换后的字符串:%s\n", str);
printf("替换了 %d 个子串\n", count);
return 0;
}
```
程序中使用了 `replace` 函数来实现字符串的替换,该函数返回替换的子串个数。具体实现过程如下:
- 使用 `strlen` 函数获取被替换子串和替换子串的长度。
- 使用 `strstr` 函数在字符串中查找被替换子串的位置,如果找到,则返回该位置的指针;否则返回 `NULL`。
- 如果找到被替换子串,则使用 `memmove` 函数将被替换子串后面的字符向前移动,留出替换子串的空间;然后使用 `memcpy` 函数将替换子串复制到被替换子串的位置。
- 将指针 `p` 向后移动到替换子串的结尾。
- 重复上述步骤,直到字符串中没有被替换子串为止。
在 `main` 函数中,先读入字符串、被替换子串和替换子串,然后调用 `replace` 函数进行替换,并输出替换后的字符串和替换的子串个数。
阅读全文