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 许可协议。转载请注明出处!