使用 c ++设计的字符串对象实现比较字符串“怀化学院”和字符串“怀化师专”的大小"); 问题2:使用设计的字符串对象查找字符串“学院”在字符串“怀化学院计算机与人工智能学院”位置。");
时间: 2023-06-01 22:03:37 浏览: 37
首先我们需要定义一个字符串对象,可以使用结构体来实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char *str; // 字符串指针
int length; // 字符串长度
} String;
```
接下来我们需要实现一些基本的字符串操作,比如创建字符串、销毁字符串、复制字符串、比较字符串等:
```c
// 创建字符串
String createString(char *s) {
String str;
str.length = strlen(s);
str.str = (char *)malloc(str.length + 1);
strcpy(str.str, s);
return str;
}
// 销毁字符串
void destroyString(String *str) {
free(str->str);
str->str = NULL;
str->length = 0;
}
// 复制字符串
void copyString(String *dest, String *src) {
dest->length = src->length;
dest->str = (char *)malloc(dest->length + 1);
strcpy(dest->str, src->str);
}
// 比较字符串
int compareString(String *s1, String *s2) {
int i;
for (i = 0; i < s1->length && i < s2->length; i++) {
if (s1->str[i] < s2->str[i]) {
return -1;
} else if (s1->str[i] > s2->str[i]) {
return 1;
}
}
if (s1->length < s2->length) {
return -1;
} else if (s1->length > s2->length) {
return 1;
} else {
return 0;
}
}
```
现在我们可以使用这些操作来解决问题:
问题1:比较字符串“怀化学院”和字符串“怀化师专”的大小
```c
int main() {
String s1 = createString("怀化学院");
String s2 = createString("怀化师专");
int result = compareString(&s1, &s2);
printf("比较结果:%d\n", result);
destroyString(&s1);
destroyString(&s2);
return 0;
}
```
输出:
```
比较结果:1
```
问题2:查找字符串“学院”在字符串“怀化学院计算机与人工智能学院”位置
```c
int main() {
String s1 = createString("怀化学院计算机与人工智能学院");
String s2 = createString("学院");
char *result = strstr(s1.str, s2.str);
if (result != NULL) {
int pos = result - s1.str + 1;
printf("子串在原串中的位置:%d\n", pos);
} else {
printf("未找到子串\n");
}
destroyString(&s1);
destroyString(&s2);
return 0;
}
```
输出:
```
子串在原串中的位置:4
```