C 코드에 문제가 있습니다. 입력 버튼으로 구분 된 이름 목록을 입력해야합니다. 사용자가 "QUIT"단어를 입력하면 입력이 중지됩니다. 프로그램은 이름 목록을 알파벳순으로 인쇄해야합니다 (모든 문자는 소문자입니다).포인터 배열의 동적 할당
각 이름의 수와 길이는 알 수 없으므로 동적으로 할당해야합니다. 또한 이름이 입력에 두 번 이상 나타나면 출력에 한 번만 나타납니다. 나는 각 포인터가 각각 포함하는 포인터의 동적 할당 배열을 사용하는 방법에 대한 생각
ben
chris
david
john
:
Please enter a list of names:
john
chris
ben
chris
david
QUIT
4 개 이름이 있습니다 : 여기
코드를 실행하는 방법에 대한 예제 이름이며 동적으로 할당됩니다. 문제는 런타임 오류가 발생하지 않고이를 작성하는 방법을 모른다는 것입니다.참고 :이 시점에서, 아직 배우지 못한 것들을 구조체 및 재귀처럼 사용할 수 없으며 stdio.h, stdlib.h 및 string.h 라이브러리 만 사용할 수 있습니다.
미리 감사드립니다. 여기
이 (가 완료 아니지만, 나는이 시점에서 런타임 오류를 받고 있어요) 코드입니다 :char **nameList;
int i = 0, j = 0, size = 0, check = 0;
printf("Please enter list of names:\n");
//allocate one cell of memory to the list
nameList = (char**)malloc(sizeof(char));
if (nameList == NULL)
{
printf("Cannot allocate Memory");
return 0;
}
//Add the first letter to the first string in the array
nameList[i][j] = getchar();
size += sizeof(char);
while (check != 1)
{
//check if current entered letter is not an enter
while (nameList[i][j] != '\n')
{
//allocated another char sized memory to the string
nameList = (char**)realloc(nameList, (size + sizeof(char)));
if (nameList == NULL)
{
printf("Cannot allocate Memory");
return 0;
}
j++;
//adding another char to the current string
nameList[i][j] = getchar();
size += sizeof(char);
}
j = 0;
if (nameList[i][j] == 'Q')
{
if (nameList[i][j + 1] == 'U')
if (nameList[i][j + 2] == 'I')
if (nameList[i][j + 3] == 'T')
check++;
}
i++;
}
[ask]와 [mcve]를 읽으십시오. 당신은 런타임 오류를 언급하고, 그 원인은 무엇입니까? 우리는 수정하려고 시도한 특정 문제를 도울 수 있지만 Stack Overflow는 코드 작성 서비스가 아닙니다. – whrrgarbl
좋습니다, 당신은 포인터와 문자열의 배열을 동적으로 할당 할 수 있어야합니다. 따라서 현재 코드와 오류를 표시해야합니다. –
나는이 학생의 학습 기회를 빼앗아 버리는 대답에 투표 할 것입니다. –