c语言改变堆栈大小,c - 使用realloc()更改malloc()的大小输出垃圾值(C语言) - 堆栈内存溢出...

作者正在开发一个程序,旨在实时记录用户输入次数,但现有程序受限于固定的数组大小。寻求解决方案,欲用realloc()根据用户输入的最大值调整malloc(),以提高灵活性。然而,现有代码导致程序不稳定。寻求帮助以修复并优化内存管理。
摘要由CSDN通过智能技术生成

该计划的作用:

我正在制作一个程序,该程序显示用户输入了多少次号码。 如果输入的数字小于1,它将停止询问值。

我能够通过阵列“计数”的值初始化为100创建程序截图就是我所做的。

该程序的问题在于,它将只接受直到100的值。它将不接受超过100的值。如果输入了超过100个值,则为屏幕截图:屏幕数超过100

问题

这是我希望realloc()进入的地方。我希望根据最高输入值更改malloc()的大小,以便使用realloc()更加灵活。

但是,这样做会破坏程序。

请帮我。

我的程序

#include

#include

#include

#include

main()

{

//DECLARATION OF VARIABLES

int i, j, k, highestValue=1, size=1;

int* input = (int*)calloc(size, sizeof(int));

int* count = (int*)calloc(highestValue, sizeof(int));

bool iCondition = true;

//USER INPUT

for (i=0; iCondition==true; i++)

{

//GETS USER INPUT

printf("Enter a number: ");

scanf("%d", &input[i]);

//CHECKS IF THE NUMBER ENTERED IS A HIGH NUMBER

if (highestValue

highestValue = input[i];

count = realloc(count, highestValue * sizeof(int));

}

//CHECKS HOW MANY TIMES THE NUMBER HAS BEEN ENTERED

bool jCondition = true;

for(j=0; jCondition==true; j++)

{

if (input[i] == j){

count[j-1]++;

jCondition=false;

}

}

//ENDS THE LOOP IF THE ENTERED NUMBER IS LESS THAN 1

if(input[i] < 1)

iCondition = false;

//IF NOT, THIS WILL REALLOCATE/CHANGE ARRAY SIZE BY ADDING +1!!

else{

size++;

input = realloc(input, size * sizeof(int));

}

}

//PRINTS OUTPUT | USES THE HIGHESTVALUE AS THE CONDITIONAL EXPRESSION FOR FLEXIBILITY

for (i=0; i<=highestValue; i++)

{

//PRINTS ALL NUMBER THAT IS NOT EQUAL TO ZERO(0)

if (count[i] != 0)

printf("\n %d was entered %d time/s ", i+1, count[i]);

}

getch();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值