qfedu-c-level/day11/d6_3.c

36 lines
840 B
C
Raw Normal View History

#include <stdio.h>
#include <stdlib.h>
#include <string.h> // 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;
}