如何解决如何在C中创建未初始化的字符串数组?
我正在尝试使用calloc方法创建字符串数组,但出现了很多错误。
int main() {
int T,i;
char *w;
char **s;
w=(char*)calloc(100,sizeof(char));
scanf("%d",&T);
s=(char**)calloc(T,sizeof(char));
s=(char*)calloc(100,sizeof(char));
for(i=0;i<T;i++)
{
scanf("%s",w);
s[i]=w;
}
}
在上面的代码中T是字符串的数目,w是字符串的最大大小。请阐明我应该如何动态和静态地声明字符串数组。
解决方法
如果您的数组存储了字符串指针,则必须为其分配一个新的字符串:
int main() {
int arraySize,i;
char *str;
char **arrayOfPtr;
scanf("%d",&arraySize);
arrayOfPtr = (char**)calloc(arraySize,sizeof(char*));
for(i=0;i<arraySize;i++)
{
str =(char*)calloc(100,sizeof(char)); //<== string allocation
scanf("%s",str);
arrayOfPtr[i]= str;
}
并且您必须分别释放字符串和数组,因为字符串存储空间不是数组的存储空间:
for (i=0;i<arraySize;i++) free(arrayOfPtr[i]);
free(arrayOfPtr);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。