c++任意读入两个字符串,存放到两个一维字符数组中,然后判断短一些的串是否为长一些串的子串
时间: 2024-02-12 10:03:36 浏览: 74
好的,我可以帮你解决这个问题。以下是一个基本的C++程序,可以实现你所需的功能:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str1[100], str2[100];
int len1, len2;
bool isSubstring = false;
cout << "请输入第一个字符串:";
cin >> str1;
cout << "请输入第二个字符串:";
cin >> str2;
len1 = strlen(str1);
len2 = strlen(str2);
if (len1 > len2) {
for (int i = 0; i < len1 - len2 + 1; i++) {
if (strncmp(str1 + i, str2, len2) == 0) {
isSubstring = true;
break;
}
}
} else {
for (int i = 0; i < len2 - len1 + 1; i++) {
if (strncmp(str2 + i, str1, len1) == 0) {
isSubstring = true;
break;
}
}
}
if (isSubstring) {
cout << "短字符串是长字符串的子串" << endl;
} else {
cout << "短字符串不是长字符串的子串" << endl;
}
return 0;
}
```
在这个程序中,我们首先定义了两个字符数组 `str1` 和 `str2`,分别用于存储输入的两个字符串。然后,我们使用 `strlen` 函数求出两个字符串的长度,接着使用 `strncmp` 函数判断短字符串是否为长字符串的子串。如果是,我们将变量 `isSubstring` 设置为 `true`,否则为 `false`。最后,根据 `isSubstring` 的值输出相应的结果。
需要注意的是,本程序中使用了 `strncmp` 函数而不是 `strcmp` 函数,这是因为 `strcmp` 函数比较的是整个字符串,而 `strncmp` 函数可以指定比较的长度,避免了比较多余部分的时间浪费。
阅读全文