#include #include #include // memset int main() { // 定义字符数组,接收用户输入的内容(最大值为 100 B) char *p = (char *)malloc(100 * sizeof(char)); if (NULL == p) { perror("malloc"); return 1; } memset(p, 0, 100 * sizeof(char)); printf("data: "); scanf("%s", p); // strlen() 获取字符的个数 int len = 0; while (p[len++]) ; // len = strlen(p); if (len != 100) { printf("before realloc,%p\n", p); // 重新分配空间 p = (char *)realloc(p, (len) * sizeof(char)); printf("after realloc,%p\n", p); } printf("%s, size of p: %d\n", p, len); // 重新分配空间后,p 的大小不变 free(p); // 释放空间 return 0; }