c - 通过超出数组的限制来重新分配数组的大小
问题描述
我无法解决问题。该程序必须根据用户的需要增加数组的大小。但是,它会跳过条件并开始显示数组本身。
int main() {
int *ptr;
int limit;
int sum = 0;
int ans;
printf("enter the limit of the array\n");
scanf_s("%d", &limit);
ptr = (int *)malloc(limit * sizeof(int));
for (int i = 0; i < limit; i++) {
printf("enter element %d : ", i + 1);
scanf_s("%d", (ptr + i));
if (i = limit) {
printf("do you want to stop entering?\n");
printf("\t\t1\t0\n");
if (scanf_s("%d", &ans) == '1') {
break;
} else
if (scanf_s("%d", &ans) == '0') {
limit += 5;
ptr = (int *)realloc(ptr, limit * sizeof(int));
printf("memory re-allocation is completed succesfully!\n");
}
}
}
for (int i = 0; i < limit; i++) {
printf("\nthis is your %d. element : %d\n", i + 1, *(ptr + i));
}
return EXIT_SUCCESS;
}
解决方案
您的代码中的if
语句:
if (i = limit)
不相i
比较limit
。limit
相反,它分配to的值,i
然后检查该表达式的结果是否非零。如果是,则进入该块,否则将被跳过。
=
是赋值运算符。使用相等运算符==
比较两个操作数。
if (i == limit)
推荐阅读
- python - 使用 python 发送电子邮件 - 未经授权的发件人地址
- vba - VBA 检测和比较字符串
- python - 使用整数列表引用另一个列表的索引以从该列表返回特定值
- python - Dask:处理反应迟钝的工人
- javascript - 是什么导致 Node 的 exec 在非套接字连接上出现此 ENOTCONN 错误?
- vue.js - cookie 与邮递员一起使用,但不适用于 vuejs
- html - 具有行跨度的表中的 Wkhtmltopdf 分页符打破了行跨度
- postgresql - 无法使用 Hibernate 访问 Postgres 数据库
- c# - 尝试在 ASP Net Core 中将 jpeg 转换为 png 会引发 GDI+ 异常
- angular - 使用 ngx-crystal-gallary 为网格视图中的每个图像添加标题标签