printf("请输入数组大小:");
scanf("%d", &n);
array = (int*)malloc(sizeof(int) * n);
// 没试过输入负数和零的情况,有机会试下
----------------解决方案--------------------------------------------------------
输入零干吗?数组下标为大于零的正整数.
----------------解决方案--------------------------------------------------------
只是看下 malloc 的返回值
应该是返回 NULL 吧,不过没自己试过。
[[it] 本帖最后由 cosdos 于 2008-2-18 21:51 编辑 [/it]]
----------------解决方案--------------------------------------------------------
array = (int*)realloc(array, N * sizeof(int));
----------------解决方案--------------------------------------------------------
楼主这已不是初学内容这已经是高级编程的内容了.
资料当然少.
----------------解决方案--------------------------------------------------------
/*
realloc() 版
输入非数字结束输入
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n;
int i;
int * array;
array = (int*)malloc(sizeof(int));
printf("把元素赋值:");
for(n = 0;
NULL != (array = (int*)realloc(array, sizeof(int) * (n + 1)))
&& scanf("%d", array + n) == 1;
n++)
continue; // 可换为空语句或,NULL;
for(i = 0; i < n; i++)
printf("%d ", array[i]);
free(array);
system("pause");
return 0;
}
---------------
----------------解决方案--------------------------------------------------------
scanf("%d", &n);
array = (int*)malloc(sizeof(int) * n);
// 没试过输入负数和零的情况,有机会试下
----------------解决方案--------------------------------------------------------
输入零干吗?数组下标为大于零的正整数.
----------------解决方案--------------------------------------------------------
只是看下 malloc 的返回值
应该是返回 NULL 吧,不过没自己试过。
[[it] 本帖最后由 cosdos 于 2008-2-18 21:51 编辑 [/it]]
----------------解决方案--------------------------------------------------------
array = (int*)realloc(array, N * sizeof(int));
----------------解决方案--------------------------------------------------------
楼主这已不是初学内容这已经是高级编程的内容了.
资料当然少.
----------------解决方案--------------------------------------------------------
/*
realloc() 版
输入非数字结束输入
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n;
int i;
int * array;
array = (int*)malloc(sizeof(int));
printf("把元素赋值:");
for(n = 0;
NULL != (array = (int*)realloc(array, sizeof(int) * (n + 1)))
&& scanf("%d", array + n) == 1;
n++)
continue; // 可换为空语句或,NULL;
for(i = 0; i < n; i++)
printf("%d ", array[i]);
free(array);
system("pause");
return 0;
}
---------------
----------------解决方案--------------------------------------------------------