-1
안녕하세요
나는이 프로그램을 작성하여 사용자가 제공 한 책 목록을 만들고 프로그램 끝에 my_value를 풀어 놓고 많은 오류가 발생할 수 없습니다.
이malloc의 예약 된 데이터
char **array=(char *) malloc((n+1)*sizeof(char *));
내 코드
#include <stdio.h>
#include <stdlib.h>
int main(){
int n;
printf("Please Enter the Number of Books:\n");
scanf("%d",&n);
char **array=(char *) malloc((n+1)*sizeof(char *));
for(int i=0;i<n;i++){
array[i] = (char *)malloc(sizeof(char *));
}
for(int i=0;i<n;i++){
char *my_value=(char *) malloc(sizeof(char)*100);
printf("Please Enter the Name of the %dth Book:\n",i+1);
scanf("%s",my_value);
*(array+i)=my_value;
free(my_value);
}
for(int i=0;i<n;i++){
printf("\n The Book Nr.%d is %s \n",i+1,*(array+i));
}
for(int i=0;i<n;i++){
free(array[i]);
}
free(array);
return 0 ;
}
어떤 종류의 오류가 발생합니까? 어떤 플랫폼을 개발하고 있습니까? [Valgrind] (http://valgrind.org/)를 사용 했습니까? 샘플 데이터를 보여주고 샘플 데이터에서 얻은 오류를보고해야합니다. 어쩌면 단지 2 권의 책 상당의 데이터 일 것입니다. 아마도 충분할 것입니다. MCVE ([MCVE])를 만드는 방법에 대해 읽어보십시오. 데이터와 출력 (실제 대 예상되는 것)은 모두 MCVE의 일부입니다. –
'malloc'의 결과를 캐스팅 할 필요가 없습니다. [malloc의 결과를 캐스팅합니까?] (https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc)를 참조하십시오. 게다가,'char ** array = (char *) malloc ((n + 1) * sizeof (char *))'는 호환되지 않는 포인터 타입을 가지고있다. – Galen