我正在尝试设置一个字符串数组(在C中,使用Linux).该数组将包含11个字符串(静态长度).我最初将阵列设置为:
char Answers[10][100];
Run Code Online (Sandbox Code Playgroud)
但在我的代码中,我有一个调用fgets(input,sizeof(input),stdin)的部分.当调用这个fgets()部分时,我的Answers数组的最后一个元素被输入的值覆盖(关于答案在堆栈上的位置?).所以现在我试图"锁定"我用于我的Answers数组的内存.我会用吗?
char Answers=calloc(11*sizeof(char));
Run Code Online (Sandbox Code Playgroud)
要么
通过循环运行 -
char Answers[10];
for(c=0;c<=10;c++)
{
Answers[c]=calloc(1*sizeof(char);
}
Run Code Online (Sandbox Code Playgroud)
另外,当我完成时,我需要使用atexit()来释放分配的内存...因为我无法在atexit()中传递参数,所以最好的方法是什么?
atexit(Free);
void Free()
{
free(Answers);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!