연락처 데이터 채우기 함수
Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 52번째.
챌린지
쉬움이전 레슨의 연락처 생성 함수를 바탕으로, 사용자 입력을 통해 연락처 정보를 채우는 함수를 작성하세요. 프로그램은 다음을 수행해야 합니다:
- 이전 레슨과 동일한
Contact구조체 정의를 사용하며, 멤버는 다음과 같습니다:- 크기가 50인 문자 배열
name - 크기가 20인 문자 배열
phone - 크기가 40인 문자 배열
email - 정수형
age
- 크기가 50인 문자 배열
- 이전 레슨과 동일한
createContact함수를 사용하며, 이 함수는 다음을 수행합니다:Contact구조체를 위한 메모리를 동적으로 할당합니다- 모든 멤버를 기본값으로 초기화합니다
- 연락처에 대한 포인터를 반환합니다
populateContact라는 이름의 함수를 작성하세요. 이 함수는 다음을 수행합니다:Contact구조체 포인터를 매개변수로 받습니다- 반환값은 없습니다 (void)
- 사용자에게 입력을 요청하고 다음 데이터를 정확히 이 순서대로 읽습니다:
Enter name:를 출력하고scanf("%s", contactPtr->name)를 사용하여 name 필드에 문자열을 읽습니다Enter phone:를 출력하고scanf("%s", contactPtr->phone)를 사용하여 phone field에 문자열을 읽습니다Enter email:를 출력하고scanf("%s", contactPtr->email)를 사용하여 email field에 문자열을 읽습니다Enter age:를 출력하고scanf("%d", &contactPtr->age)를 사용하여 age field에 정수를 읽습니다
- 모든 입력을 읽은 후, 데이터를 검증합니다:
- 나이가 0보다 작거나 120보다 크면,
Invalid age entered를 출력합니다 - 전화번호 길이가 10자 미만이면 (
strlen()사용),Invalid phone number를 출력합니다 - 모든 검증을 통과하면,
Contact populated successfully를 출력합니다
- 나이가 0보다 작거나 120보다 크면,
- main 함수에서 다음을 수행합니다:
createContact함수를 사용하여 연락처를 생성합니다- 연락처 생성이 성공했는지 확인합니다
populateContact함수를 호출하여 연락처 데이터를 채웁니다- 데이터를 채운 후, 화살표 연산자를 사용하여 다음 형식으로 연락처 정보를 표시합니다:
Contact Information:Name: [name]Phone: [phone]Email: [email]Age: [age]
- 동적으로 할당된 메모리를 해제합니다
Contact deleted successfully를 출력합니다
이 챌린지는 포인터를 통해 구조체 데이터를 수정하는 함수를 만드는 방법을 보여줍니다. populateContact 함수는 연락처에 대한 포인터를 전달받고 화살표 연산자를 사용하여 원본 구조체의 멤버를 직접 수정합니다. 사용자 입력 처리, 데이터 검증, 그리고 함수 매개변수를 통한 동적 할당 구조체 작업을 연습하게 됩니다.
직접 해보기
#include <stdio.h>
#include <stdlib.h>
struct Contact {
char name[50];
char phone[20];
char email[40];
int age;
};
struct Contact* createContact() {
struct Contact* contactPtr = (struct Contact*)malloc(sizeof(struct Contact));
if (contactPtr == NULL) {
printf("Memory allocation failed\n");
return NULL;
}
printf("Contact created successfully\n");
contactPtr->name[0] = '\0';
contactPtr->phone[0] = '\0';
contactPtr->email[0] = '\0';
contactPtr->age = 0;
return contactPtr;
}
int main() {
struct Contact* newContact;
newContact = createContact();
if (newContact == NULL) {
printf("Failed to create contact\n");
return 1;
}
printf("Contact initialized with default values\n");
printf("Default Contact Values:\n");
printf("Name: %s\n", newContact->name);
printf("Phone: %s\n", newContact->phone);
printf("Email: %s\n", newContact->email);
printf("Age: %d\n", newContact->age);
free(newContact);
printf("Memory freed successfully\n");
return 0;
}