试编写一个函数,实现在顺序存储方式下字符串的strcompare(S1,S2)的运算
时间: 2025-04-05 16:19:32 浏览: 37
### 实现顺序存储结构下的字符串比较函数 `StrCompare`
以下是基于 C 语言实现的字符串比较函数 `StrCompare` 的代码示例。该函数用于比较两个字符串 `S1` 和 `S2`,返回值分别为正数、零或负数,分别表示第一个字符串大于、等于或小于第二个字符串。
```c
#include <stdio.h>
#include <string.h>
// 定义最大字符串长度
#define MAX_LEN 100
typedef struct {
char ch[MAX_LEN]; // 存储字符串的实际字符数组
int length; // 字符串实际长度
} SeqString;
// 比较两个字符串 S1 和 S2
int StrCompare(SeqString S1, SeqString S2) {
int i = 0;
while (i < S1.length && i < S2.length) { // 遍历到最短字符串结束
if (S1.ch[i] != S2.ch[i]) { // 如果发现不相等的字符
return S1.ch[i] - S2.ch[i]; // 返回 ASCII 差值
}
i++;
}
// 若遍历结束后未找到不同,则按长度比较
return S1.length - S2.length;
}
void PrintSeqString(SeqString S) {
for (int i = 0; i < S.length; ++i) {
printf("%c", S.ch[i]);
}
printf("\n");
}
int main() {
SeqString S1 = {"abcdefg", 7}; // 初始化字符串 S1
SeqString S2 = {"abcdegh", 7}; // 初始化字符串 S2
printf("S1: ");
PrintSeqString(S1);
printf("S2: ");
PrintSeqString(S2);
int result = StrCompare(S1, S2); // 调用比较函数
if (result > 0) {
printf("Result: S1 is greater than S2\n"); // 结果为正说明 S1 大于 S2
} else if (result == 0) {
printf("Result: S1 equals to S2\n"); // 结果为零说明 S1 等于 S2
} else {
printf("Result: S1 is less than S2\n"); // 结果为负说明 S1 小于 S2
}
return 0;
}
```
#### 代码解释
上述代码实现了基于顺序存储结构的字符串比较功能:
- 使用了一个自定义的数据结构 `SeqString` 来模拟定长顺序存储的字符串[^1]。
- 函数 `StrCompare` 对两个字符串逐字符进行比较,直到遇到不同的字符或者其中一个字符串结束为止。
- 当两字符串前缀相同但长度不同时,通过比较其长度来决定大小关系[^3]。
---
###
阅读全文
相关推荐














