반응형
c언어 동적 메모리 이용해서 여러 가지 문제 풀어보기(10개의 문자열을 저장하는 동적 메모리 할당받기, 동적 구조체 배열을 이용한 영화 관리 프로그램 만들기)
네 안녕하세요, 이번 포스팅에서는 지금까지 배웠던 동적 메모리를 이용해서 여러가지 문제들을 풀어보도록 하겠습니다.
동적 메모리는 정말 중요한 프로그래밍 요소이기 때문에 가벼이 넘겨서는 안되니,
잘 연습하시기 바랍니다.
그럼 지금부터 시작하도록 하겠습니다.
1. 10개의 문자열을 저장하는 동적 메모리 할당받기
먼저 해볼 것은 10개의 문자열을 저장하는 동적 메모리를 할당받는 것입니다.
모든 글자는 'test string'으로 초기화를 시킬 것입니다.
그럼 바로 보여드리도록 하겠습니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *list[10];
for(int i = 0; i < 10; i++)
{
list[i] = (char *)malloc(100 * sizeof(char));
if(list[i] == NULL)
{
printf("malloc() 실패\n");
exit(1);
}
strcpy(list[i], "test string");
}
for(int i = 0; i < 10; i++)
{
printf("문자열 %d = %s\n", i, list[i]);
}
free(list);
return 0;
}
이제 결과를 보여드리도록 하겠습니다.
문자열 0 = test string
문자열 1 = test string
문자열 2 = test string
문자열 3 = test string
문자열 4 = test string
문자열 5 = test string
문자열 6 = test string
문자열 7 = test string
문자열 8 = test string
문자열 9 = test string
결과도 잘 나오는 것을 확인할 수 있습니다.
반응형
2. 동적 구조체 배열을 이용한 영화 관리 프로그램 만들기
이번에는 영화 관리 프로그램을 만들 것입니다.
그냥 정적 배열을 이용하면 간단하지만,
메모리를 유동적으로 쓸 수 없어서 좀 더 상위 버전의 방법이라고 생각하시면 됩니다.
그럼 바로 시작해 보도록 하겠습니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct movie
{
char title[100];
double rating;
}MOVIE;
int main()
{
MOVIE *movies;
int size, i;
printf("몇 편이나 저장하시겠습니까?");
scanf("%d", &size);
getchar();
movies = (MOVIE*)malloc(sizeof(MOVIE));
if(movies == NULL)
{
printf("동적 메모리 할당 오류\n");
exit(1);
}
for(int i = 0; i < size; i++)
{
printf("영화 제목 : ");
gets_s(movies[i].title, 100); // 영화 제목에는 빈칸이 있을 수 있음.
printf("영화 평점 : ");
scanf("%lf", &(movies[i].rating));
getchar(); // 엔터기 제거
}
printf("====================\n");
printf("제목 평점\n");
printf("====================\n");
for(i = 0; i < size; i++)
{
printf("%s \t %f", movies[i].title, movies[i].rating);
}
printf("====================\n");
free(movies);
return 0;
}
이제 결과를 보여드리도록 하겠습니다.
몇 편이나 저장하시겠습니까? 1
영화 제목 : 저스티스 리그
영화 평점 : 9.0
====================
제목 평점
====================
저스티스 리그 9.000000
====================
문제없이 나옴을 확인할 수 있습니다.
여기까지 c언어에서 쓰이는 요소들을 알아봤습니다.
c언어 기본에 관한 마지막 포스팅까지 읽어주셔서 너무 감사드리고,
다음에 더 좋은 콘텐츠를 들고 찾아뵙도록 하겠습니다.
다시 한번 감사드립니다~
반응형
'c언어' 카테고리의 다른 글
c언어 연결 리스트 응용해 보기(책 목록 관리 프로그램 만들기) (0) | 2023.02.28 |
---|---|
c언어 연결 리스트 생성 방법에 대하여 알아보기 (0) | 2023.02.27 |
c언어 연결 리스트에 대하여 알아보기 (0) | 2023.02.27 |
c언어 calloc()과 realloc()에 대하여 알아보기 (0) | 2023.02.27 |
c언어 동적 메모리 사용하는 기본 예제 풀어보기(정수를 저장할 수 있는 동적 메모리 생성하기, 성적 처리 프로그램 작성하기, 동적 메모리에 구조체를 저장할 수 있는 공간 할당 받기) (0) | 2023.02.27 |
댓글