작성
·
241
0
// main.c
#include "music.c"
int main()
{
int choice, anser, data;
while (1)
{
system("cls");
printf("\n\n\t 음악차트 프로그램 \n\n");
printf("\t 1. 전체차트 \t 2. 인기차트 \t 3. 나만의 차트 \t 4. 곡추가 \t 0. exit\n");
printf("\t choice : [ ]\b\b");
scanf("%d", &choice);
while (getchar() != '\n');
switch (choice)
{
case 1: //1. 전체차트
{
void songchartlist();
printf("전체차트출력\n");
}
break;
case 2: //2. 인기차트
break;
case 3: //3. 나만의 차트
break;
case 4:
printf("\n\n 곡추가 \n\n");
printf("어디에 추가하시겠습니까?\n");
printf("\t 1. 맨앞 추가 \t 2. 중간 추가 \t 3. 맨뒤 추가 \t 4. 삭제 \t 5. 취소 \n");
scanf("%d", &anser);
if(1 == anser)
{
//void insertfrontnode();
}
break;
case 0:
exit(0);
}
printf("\n\n\t\t");
system("pause");
}
return 0;
}
//music.c
#include "music.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
song* head = NULL;
void songchartlist() // 음악
{
song* newsong = (song*)malloc(sizeof(song));
strcpy(newsong->title, "미아");
strcpy(newsong->artist, "아이유");
strcpy(newsong->lyrics, "우리 둘 담아 준 사진을 태워");
newsong->views = 0;
newsong->next = NULL;
head = newsong;
printf("%s\n", newsong->title);
while (getchar() != '\n');
}
// music.h
#include <stdio.h>
typedef struct node{ //단순연결리스트
char title[50];
char artist[50];
char lyrics[200];
int views;
int value;
struct node* next;
}song;
void songchartlist();
//void insertfrontnode();
/*main.c, music.c, music.h 3가지 파일을 만들었습니다
case 1 을 실행시켜도 void songchartlist() 함수에
프린트가 안되는 이유를 알려주실 수 있나요?*/
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
님의 코드를 살펴보았을 때, main.c
파일의 case 1
안에서 songchartlist()
함수를 호출하고자 하는 것 같은데, 실제로 그 함수를 호출하고 있지 않습니다. 님이 작성한 void songchartlist();
라인은 함수의 원형을 재선언하는 것일 뿐이며, 함수를 호출하는 것은 아닙니다.
함수를 호출하려면 songchartlist();
와 같이 함수 이름 뒤에 괄호를 붙여 작성해야 합니다. 따라서 case 1
부분을 다음과 같이 수정해야 합니다:
// main.c에서 case 1 수정 부분
case 1: //1. 전체차트
{
songchartlist(); // songchartlist 함수 호출
printf("전체차트출력\n");
}
break;
또한 #include "music.c"
대신에 #include "music.h"
를 사용하여 헤더 파일만을 포함시켜야 합니다. .c
소스 파일을 직접 include
하는 것은 일반적인 C 프로그래밍 방식이 아닙니다. 수정할 경우 main.c
파일의 상단은 다음과 같이 보일 것입니다:
// main.c 수정된 #include 부분
#include "music.h" // .h 헤더를 include
...
이렇게 수정하면 main.c
파일에서 songchartlist()
함수가 올바르게 호출되어 음악 차트를 출력할 수 있을 것입니다.