두 개의 함수를 사용하여 문자열 배열을 채우고 싶습니다. 할당 할 문자열이 n 개 있으면 n 개의 메모리 공간을 할당합니다. 여기문자열 배열에 메모리 할당
char** allocate(int n)
{
char** t;
t=(char**)malloc(n*sizeof(char*));
if(!t) exit(-1);
return t;
}
이 두 번째입니다 :
void fill(char*** t,int n)
{
int i;
char* help=" ";
for(i=0;i<n;i++)
{
printf("\n saisir la chaine n %d :",i+1);
scanf("%s",help);
*t[i]=(char*)malloc((strlen(help)+1)*sizeof(char));
strcpy(*t[i],help);
}
}
내가 main
에서 두 번째 하나를 호출하는 것을 잊지 않았다 각 문자열에 대한 메모리를 할당합니다 두 번째는 여기
fill(&t,n);
문제는 첫 번째 문자열을 읽은 후 오류가 발생하여 프로그램이 끝나는 것입니다.
'char * help = ""; – this
확장하려면'scanf ("% s", help)를 호출 할 때'help'는 충분히 큰 메모리 위치를 가리켜 야합니다 –
C에서'malloc'의 결과를 캐스팅 할 필요가 없습니다. – dasblinkenlight