#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 串结构
typedef struct {
char* data;
int length;
} String;
// 初始化串
void initString(String* string, const char* initial) {
int len = strlen(initial);
string->data = (char*)malloc((len + 1) * sizeof(char));
strcpy(string->data, initial);
string->length = len;
printf("初始化串成功:%s\n", string->data);
}
// 销毁串
void destroyString(String* string) {
free(string->data);
string->data = NULL;
string->length = 0;
printf("销毁串成功\n");
}
// 添加字符到串尾
void appendCharacter(String* string, char ch) {
string->data = (char*)realloc(string->data, (string->length + 2) * sizeof(char));
string->data[string->length] = ch;
string->data[string->length + 1] = '\0';
string->length++;
printf("添加字符到串尾成功:%s\n", string->data);
}
// 删除串尾字符
void deleteLastCharacter(String* string) {
if (string->length > 0) {
string->data = (char*)realloc(string->data, string->length * sizeof(char));
string->data[string->length - 1] = '\0';
string->length--;
printf("删除串尾字符成功:%s\n", string->data);
} else {
printf("删除失败:串为空\n");
}
}
// 修改指定位置的字符
void modifyCharacter(String* string, int index, char ch) {
if (index >= 0 && index < string->length) {
string->data[index] = ch;
printf("修改指定位置的字符成功:%s\n", string->data);
} else {
printf("修改失败:索引超出范围\n");
}
}
// 查找字符在串中的位置
int findCharacter(String* string, char ch) {
int i;
for (i = 0; i < string->length; i++) {
if (string->data[i] == ch) {
printf("字符 %c 在串中的位置为:%d\n", ch, i);
return i;
}
}
printf("未找到字符 %c\n", ch);
return -1;
}
int main() {
String string;
const char* initial = "Hello";
initString(&string, initial);
appendCharacter(&string, '!');
deleteLastCharacter(&string);
modifyCharacter(&string, 1, 'a');
findCharacter(&string, 'o');
destroyString(&string);
return 0;
}