【发布时间】:2020-04-08 20:47:00
【问题描述】:
我正在尝试做的是一个小程序,它采用一组数字(每个示例 123654000256)并在检测到“0”后删除所有数字(如果我输入 1230456 应该返回 123),所以我试图用 malloc / realloc 来做,但是当我 realloc 它仍然返回所有元素
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
char *suite;
int i,a,temp;
suite = (char*)malloc(100*sizeof(char));
printf("Enter a suite of numbers : ");
scanf("%s",suite);
i=-1;
do{
i++;
a=i;
}while((suite[i]-'0') != 0);
suite = realloc(suite,a*sizeof(char));
printf("New suite: ");
printf(suite);
return 0;
}
我输入 4564560123 它在我输入时返回它,这是什么问题?
【问题讨论】:
-
因为
sizeof(char)将始终等于1,所以suite = realloc(suite,a*sizeof(char));(和其他)语句可以简化为suite = realloc(suite,a*);。还有就是not recommended to cast the return value ofmallocin C
标签: c pointers malloc allocation realloc