这个问题已经在这里有一个答案:
我已经采取的100,效果不错字符数组的最大大小用C语言编写一些代码。但是,当我增加字符数组的最大大小为10000它给了我分段错误(因为它已超出限制)。谁能告诉我,我怎么能增加最大尺寸和存储长度10000的字符串。
即如何可以采取“CHAR [100]”为“炭A [10000]”和执行相同的代码????
您可以动态分配的数组:
#include <stdlib.h>
char *a = malloc(100*sizeof(char));
if (a == NULL)
{
// error handling
printf("The allocation of array a has failed");
exit(-1);
}
当你想增加它的大小:
tmp_a = realloc(a, 10000*sizeof(char));
if ( tmp_a == NULL ) // realloc has failed
{
// error handling
printf("The re-allocation of array a has failed");
free(a);
exit(-2);
}
else //realloc was successful
{
a = tmp_a;
}
最后,记得要释放分配的内存,当不再需要该数组:
free(a);
基本上realloc(prt, size)
返回一个指向具有由size
指定的大小并释放块由ptr
指向一个新的存储块。如果失败了,原来的内存块不被释放。请阅读here和here进一步的信息。