저는 C 언어에 대해 상당히 익숙하며 문자열을 참조 할 때 배열과 포인터에 익숙해 져 있습니다. 나는 2 개의 숫자 (정수)의 입력을 요구할 수 있으며, 아무런 문제없이 원하는 숫자 (첫 번째 숫자 또는 두 번째 숫자)를 반환 할 수 있습니다. 그러나 이름을 요청하고이를 반환하려고 시도 할 때 이름을 입력하고 이유를 모르면 프로그램이 중단됩니다.포인터와 malloc 문제
이론에서는 이름을위한 메모리를 예약 한 다음 두 번째 이름을 포함하도록 메모리를 확장하려고합니다. 왜이 휴식 시간을 설명 할 수 있을까요?
감사합니다.
#include <stdio.h>
#include <stdlib.h>
void main()
{
int NumItems = 0;
NumItems += 1;
char* NameList = malloc(sizeof(char[10])*NumItems);
printf("Please enter name #1: \n");
scanf("%9s", NameList[0]);
fpurge(stdin);
NumItems += 1;
NameList = realloc(NameList,sizeof(char[10])*NumItems);
printf("Please enter name #2: \n");
scanf("%9s", NameList[1]);
fpurge(stdin);
printf("The first name is: %s",NameList[0]);
printf("The second name is: %s",NameList[1]);
return 0;
}
0을 반환하는'void' 함수를 사용할 수 없습니다. 'main()'은 항상 처음에'int'를 반환하도록 선언되어야합니다. –
고마워요 조나단. 나는 그 변화를 만들었다. – Andy