参照教材所述类 C 语言算法,实现基于串的定长顺序存储表示方法,主要实现对于以字符型 数据为数据元素的串结构的定义、初始化、赋值、求子串等操作;
时间: 2024-02-21 13:01:58 浏览: 24
好的,以下是基于串的定长顺序存储表示方法的 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
// 定义串结构体
typedef struct {
char data[100]; // 存储串的字符数组
int length; // 串的长度
} SString;
// 初始化串
void initSString(SString *s) {
s->length = 0;
memset(s->data, 0, sizeof(s->data));
}
// 赋值操作
void assignSString(SString *s, char *str) {
s->length = strlen(str);
strncpy(s->data, str, s->length);
}
// 求子串
void subSString(SString *sub, SString *s, int pos, int len) {
if (pos < 1 || pos > s->length || len < 0 || len > s->length - pos + 1) {
printf("Invalid position or length.\n");
return;
}
sub->length = len;
strncpy(sub->data, s->data + pos - 1, len);
}
int main() {
SString s, sub;
initSString(&s);
initSString(&sub);
assignSString(&s, "Hello, world!");
printf("s: %s\n", s.data);
printf("s.length: %d\n", s.length);
subSString(&sub, &s, 7, 5);
printf("sub: %s\n", sub.data);
printf("sub.length: %d\n", sub.length);
return 0;
}
```
代码中首先定义了一个结构体 `SString`,用来表示串,包括一个字符数组 `data` 和一个整数 `length`,分别用来存储串的字符和长度。然后定义了几个操作函数,包括初始化、赋值和求子串。最后在 `main` 函数中创建一个串 `s`,给它赋值,然后求出它的一个子串 `sub`,并输出结果。
运行结果为:
```
s: Hello, world!
s.length: 13
sub: world
sub.length: 5
```
注意,这里的子串起始位置从 1 开始,和 C 语言中的数组下标不同。所以在 `subSString` 函数中需要进行一些转换。