我要进入字符串,但它一直在返回段故障双指针指向字符串采取导致段故障
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char **arr;
arr= (char**) malloc (5);
for(int i =0 ; i<5 ; i++)
{
arr[i]=(char *)malloc(10);
}
for(int i=0 ; i<5 ;i++)
{
char ch[10];
printf("%d",i);
scanf("%s",ch);
strcpy(arr[i],ch);
}
for(int i=0 ; i<5 ;i++)
{
printf("%s ",arr[i]);
}
for(int i=0;i<5;i++)
free (arr[i]);
free (arr);
}
而且代码块不给错误并运行它完美谁能告诉我为什么?
您正在分配5个字节,但您需要'5 * sizeof(char *)'来存放5个指针。 – stark
也不要投射malloc的输出。 – stark
作为一般规则,你可以缩短为“不要投” – stark