编辑
2023-09-23
cpp
00
请注意,本文编写于 595 天前,最后修改于 595 天前,其中某些信息可能已经过时。
c
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char* data; int length; int capacity; } String; String NewString(const char* initialData) { String str; str.length = 0; str.capacity = 0; str.data = NULL; if (initialData != NULL) { int initialLength = strlen(initialData); str.capacity = initialLength + 1; str.data = (char*)malloc(str.capacity * sizeof(char)); if (str.data != NULL) { strcpy(str.data, initialData); str.length = initialLength; } } return str; } void appendString(String* str, const char* additionalData) { if (additionalData != NULL) { int additionalLength = strlen(additionalData); if (str->length + additionalLength + 1 > str->capacity) { int newCapacity = (str->length + additionalLength + 1) * 2; char* newData = (char*)realloc(str->data, newCapacity * sizeof(char)); if (newData != NULL) { str->data = newData; str->capacity = newCapacity; } else { // 内存不足,无法追加字符串 return; } } strcpy(str->data + str->length, additionalData); str->length += additionalLength; } } void printString(const String* str) { if (str != NULL && str->data != NULL) { printf("%s", str->data); } } void freeString(String* str) { if (str != NULL && str->data != NULL) { free(str->data); str->data = NULL; str->length = 0; str->capacity = 0; } } int main() { String myString = NewString("Hello, "); appendString(&myString, "world!"); printString(&myString); freeString(&myString); return 0; }

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!