【发布时间】:2015-12-15 13:22:18
【问题描述】:
我正在尝试用 C 创建一个程序,在每个偶数之后添加一个“0”。但我有一个问题。例如,如果我只插入偶数(5 个或更多数字),程序就会崩溃。
下面是我现在的程序。
我想要一些指示或代码示例来指出我做错了什么以及如何解决它。
void main()
{
int *a, i, n, m;
printf("dimensiune=");
scanf_s("%d", &n);
a = (int*)malloc(n*sizeof(int));
for (i = 0; i < n; i++)
{
printf("a[%d]=", i + 1);
scanf_s("%d", &a[i]);
}
for (i = 0; i < n; i++)
{
if (a[i] % 2 == 0)
{
n++;
a = (int*)realloc(a, n*sizeof(int));
for (m = n - 1; m > i;m--)
{
a[m + 1] = a[m];
}
a[i + 1] = 0;
i++;
}
}
printf("\n currently you have %d numbers in this string\n", n);
printf("your string \n");
for (i = 0; i < n; i++)
{
printf("a[%d]=%d\n", i + 1, a[i]);
}
}
【问题讨论】:
-
void main()最好是int main(void)之类的。 -
这个解决了,谢谢,你能解释一下为什么吗,void main()和int main(void)有什么区别?
-
在使用
realloc并直接分配回您要重新分配的指针时要小心,如果realloc失败,它将返回NULL,您将失去原来的指针。 -
void main()是实现定义的入口点定义方式。int main(void)是标准之一。