使用C语言实现串的增删改查基本操作

#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;
}

 

posted @ 2023-07-03 23:33  nullIsland01  阅读(191)  评论(0)    收藏  举报