작성
·
12
·
수정됨
0
전화번호부 v1.0(1) 인덱스 관련하여 질문입니다. 강의를 아무리 돌려봐도 인덱스를 업데이트 안하네요.
제 생각에는 add 하면 ++
delete 하면 --
아니면 최소한 return int로 적절한 값을 갱신하던가
아니면 주소값을 참조하여 갱신하던가 뭔가 전화번호부 인덱스가 업데이트되어야 할거라고 생각하는 데 코드를 못따라가겠습니다.
제가 무엇을 놓치고 있는거 같은지 혹시 답변해주실 분 계실까요????
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define BOOK_SIZE 100
#define BUFFER_SIZE 100
void add()
int main(void)
{
char *names[BOOK_SIZE];
char *phones[BOOK_SIZE];
char *buffer[BUFFER_SIZE];
int length;
length = 0;
while (1)
{
pritnf("$ ");
// fgets(buffer, BUFFER_SIZE, stdin);
scanf("%s", buffer);
if (strcmp(buffer, "exit") == 0)
return (0);
if (strcmp(buffer, "add") == 0)
add();
//length++;
else if (strcmp(buffer, "find") == 0)
find();
else if (strcmp(buffer, "delete") == 0)
delete();
else if (strcmp(buffer, "status") == 0)
status();
else
printf("명령어는 총 5가지 입니다. add, find, status, delete, exit");
}
return (0);
}답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 헬로우님께서 제기하신 전화번호부 v1.0(1) 인덱스 관련 문제에 대해 말씀드리겠습니다.
전화번호부 프로그램에서 add나 delete를 통해 인덱스를 업데이트하는 과정은 매우 중요합니다. 인덱스를 관리하는 변수 length를 적절히 갱신해야 전화번호부의 크기를 올바르게 추적할 수 있습니다.
여기에서 중요한 점은:
1. 데이터 추가 시: add() 함수 안에서 length를 증가시켜야 합니다. 이는 전화번호부에 새로운 항목이 추가되었음을 나타냅니다.
2. 데이터 삭제 시: delete() 함수 안에서 length를 감소시켜야 합니다. 삭제 연산을 통해 항목이 제거되었음을 반영해야 합니다.
3. 적절한 인덱스 관리: 전화번호부의 크기를 유지 관리하기 위해 인덱스가 변할 때마다 length를 수정해야 합니다. 함수 내에서 return 값이나 포인터를 통해 변화를 반영할 수도 있습니다.
코드를 보면 add() 함수가 미완성 상태에 있어서, 이 함수 내에서 인덱스를 증가시키는 코드가 누락된 것 같습니다. delete() 함수 역시 length--와 같은 코드를 포함할 필요가 있습니다.
아래는 함수의 변화를 간단히 설명하는 예시입니다:
void add(char *names[], char *phones[], int *length) {
// 새로운 항목을 names와 phones에 추가하는 코드
(*length)++; // length를 증가시켜 전화번호부에 항목이 추가되었음을 반영
}
void delete(char *names[], char *phones[], int *length) {
// 특정 항목을 names와 phones에서 제거하는 코드
(*length)--; // length를 감소시켜 삭제를 반영
}
자세한 구현은 강의 내용을 따라가며, 각 함수의 내부 로직을 완성하시면 도움이 될 것입니다.
관련 질문으로 “C로 배우는 자료구조: 함수 내 전역변수 인덱스 갱신 방법”을 확인해 보실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.