36 lines
840 B
C
36 lines
840 B
C
|
#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;
|
|||
|
}
|