在C中实现string字符串,使用typedef将string定义为char *。
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef char* string; string get_string(string); int main(void) { string name = get_string("What's your name? "); printf("Hello, %s! ", name); printf("strlen: %d ", strlen(name)); return 0; } string get_string(string msg) { int len = 8; string str = (string)malloc(sizeof(char)*len); // 动态分配一个长度为len的字符串指针 char *ptr = str; // 将ptr指针指向str char ch; int i = 0; printf("%s", msg); while ((ch = getchar()) != ' ') // 循环接收字节,直到用户输入回车 { *ptr++ = ch; // 将ch赋值给*ptr并且ptr指向下一个地址 i++; if (i == len) // 如果长度已满 { string tmp = str; // tmp指向str len *= 2; // 长度翻倍 str = (string)malloc(sizeof(char)*len); // str重新指向一个动态分配长度翻倍的字符串指针 strcpy(str, tmp); // 将tmp中的字符都复制给str ptr = str + i; // ptr现在指向新的str中的第i个字符地址 free(tmp); // 释放内存空间 tmp = NULL; } } *ptr = '