#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
char *s;
s = malloc(1024 * sizeof(char));
scanf("%[^\n]", s);
// s = realloc(s, strlen(s) + 1);
for(int i=0;i<strlen(s);i++)
{
if(s[i]==' ')
printf("\n");
else {
printf("%c",s[i]);
}
}
return 0;
}
这是 hackkerrank 的一个问题,虽然我评论了 realloc() 该程序工作正常,但我以为我不会工作! 我很好奇 realloc() 是做什么的,顺便说一句,我目前正在学习指针基础知识。
请参阅 https://en.cppreference.com/w/c/memory/realloc 。
realloc
确实将内存缩小到此处所需的空间,因此分配的 1024 字节的其余部分可以由另一个 malloc 调用使用。