앞으로의 목표는 가사 파일을 파일로 불러와 읽어서 처리할것이다.
그리고 멈추는 기능도 만들수 있을것 같다.
#include#include #include #include #include #include #include #include #pragma warning(disable:4996) #pragma comment(lib, "winmm.lib") typedef struct _finddata_t FILE_SEARCH; void ls(); void cd(char *command); void all(char* path); void cls(); char *replaceAll(char *s, const char *olds, const char *news); void mp3_player(); void command_chaeck(); void lyrics(); char temp[400][512]; char strBuffer[_MAX_PATH] = { 0 }; char *pstrBuffer = NULL; int wav_file_cnt = 0; int now_file_num = 0; int play_time[] = {13,16,19,23}; char play_lyrics[500][100] = {"[나연] 모두 나를 가지고 매일 가만 안 두죠","[모모] 내가 너무 예쁘죠 나 때문에 다 힘들죠","[나연] 어딜 걷고 있어도 빨간 바닥인거죠","[사나] Red carpet 같은 기분 모두 날 쳐다 보죠 Oh"}; TCHAR file_name[512] = { 0, }; TCHAR file_set[512] = { 0, }; void main() { char command[100]; const char exit[] = "exit "; const char cols[] = "ls "; const char cocd[] = "cd "; const char coall[] = "all"; const char cocls[] = "cls"; const char mp3[] = "mp3"; char *path=NULL; while (1) { pstrBuffer = getcwd(strBuffer, _MAX_PATH); printf("all입력후 원하시는 절대경로를 입력해주시면 됩니다. (all C:\\) \n\n"); printf("%s :", pstrBuffer); fgets(command, sizeof(command), stdin); if (strncmp(command, exit, 4) == 0) break; else if (strncmp(command, cols, 2) == 0) ls(); else if (strncmp(command, cocd, 2) == 0) { if (strncmp(command, cocd, 3) == 0) cd(command); else printf("cd : cd is not command!!\n"); } else if (strncmp(command, coall, 3) == 0) { path = strtok(command, " "); while (path != NULL) { path = strtok(NULL, ""); if (path != NULL) break; } path[strlen(path) - 1] = '\0'; all(path); printf("Wav File List!!!!\n\n\n"); for (int i = 0; i < wav_file_cnt; i++) { puts(temp[i]); } } else if (strncmp(command, cocls, 3) == 0) cls(); else if (strncmp(command, mp3, 3) == 0) { if (wav_file_cnt == 0) { printf("all을 실행해주세요\n"); } else { mp3_player(); } } } } void ls() { long h_file; FILE_SEARCH file_search; char search_Path[100] = ".\\*.*"; char txt[] = ""; char *test = NULL; int i = 0; if ((h_file = _findfirst(search_Path, &file_search)) == -1L) { printf("No files in current directory!\n"); exit(1); } do { if (strstr(file_search.name, txt)) { //strcpy(test, file_search.name); //i = isFileOrDir(file_search.name); if (file_search.attrib == 16) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 4); puts(file_search.name); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); } else { puts(file_search.name); } } } while (_findnext(h_file, &file_search) == 0); } void cd(char *command) { char cut[] = " "; char end[] = ""; char new_command[100]; char cd_command[100]; char *command_cut = NULL; strcpy(new_command, command); new_command[strlen(new_command) - 1] = '\0'; command_cut = strtok(command, cut); while (command_cut != NULL) { command_cut = strtok(NULL, end); if (command_cut != NULL) break; } pstrBuffer = getcwd(strBuffer, _MAX_PATH); strcpy(cd_command, pstrBuffer); strcat(cd_command, "\\"); strcat(cd_command, command_cut); command_cut[strlen(command_cut) - 1] = '\0'; char *ch = replaceAll(cd_command, "\\", "\\\\"); strcpy(cd_command, ch); int error_check = chdir((char*)cd_command); if (error_check == -1) { printf("%s : %s is not a folder or .\n", new_command, command_cut); return; } } void all(char *path) { long h_file; FILE_SEARCH file_search; char search_Path[512]; strcpy(search_Path, path); char search_command[512]; strcpy(search_command, search_Path); strcat(search_command, "*.*"); char temp_[512]; char old_Path[512]; strcpy(old_Path, search_Path); char txt[] = ""; char *test = NULL; int i = 0; if ((h_file = _findfirst(search_command, &file_search)) == -1L) { //printf("No files in current directory!\n"); return; } do { if (strstr(file_search.name, txt)) { if (strstr(file_search.name, ".wav")) { strcpy(temp_, search_Path); strcat(temp_, file_search.name); strcpy(temp[wav_file_cnt],temp_); wav_file_cnt++; } if ((strcmp(file_search.name, ".") == 0) || (strcmp(file_search.name, "..") == 0)) { continue; } else if (file_search.attrib == 16 || file_search.attrib == 17) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 4); puts(file_search.name); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); int error_check = chdir(search_Path); if (error_check == -1) { printf("error\n"); return; } strcat(search_Path, file_search.name); strcat(search_Path, "\\"); all(search_Path); strcpy(search_Path, old_Path); } else { puts(file_search.name); } } } while (_findnext(h_file, &file_search) == 0); int error_check = chdir(pstrBuffer); if (error_check == -1) { printf("error\n"); return; } } void cls() { system("cls"); } char *replaceAll(char *s, const char *olds, const char *news) { char *result; char *sr; size_t i, count = 0; size_t oldlen = strlen(olds); if (oldlen < 1) return s; size_t newlen = strlen(news); if (newlen != oldlen) { for (i = 0; s[i] != '\0';) { if (memcmp(&s[i], olds, oldlen) == 0) count++, i += oldlen; else i++; } } else i = strlen(s); result = (char *)malloc(i + 1 + count * (newlen - oldlen)); if (result == NULL) return NULL; sr = result; while (*s) { if (memcmp(s, olds, oldlen) == 0) { memcpy(sr, news, newlen); sr += newlen; s += oldlen; } else *sr++ = *s++; } *sr = '\0'; result[strlen(result) - 1] = '\0'; return result; } void command_chaeck() { int key_command; while (!kbhit()); key_command = getch(); do { key_command = getch(); } while (key_command == 244); switch (key_command) { case 77: { now_file_num++; if (now_file_num == wav_file_cnt) now_file_num = wav_file_cnt - 1; break; } case 75: { if (now_file_num == 0) break; now_file_num--; break; } default: break; } } void mp3_player() { int max_size = 0; while (1) { MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, temp[now_file_num], strlen(temp[now_file_num]), file_name, 512); if (strlen(file_name) > max_size) { max_size = strlen(file_name); } file_name[(max_size-(max_size - strlen(temp[now_file_num])))] = '\0'; printf("<- 이전노래, -> 다음노래 \n"); printf("현재 실행되는 노래의 이름: %s\n", temp[now_file_num]); PlaySound((LPCWSTR)file_name, NULL, SND_FILENAME | SND_ASYNC | SND_LOOP); _beginthread(lyrics, 0, 0); command_chaeck(); system("cls"); } } void lyrics() { int time = 0; int now = 0; while (1) { Sleep(1000); time++; if (play_time[now] < time) { printf("%s\n", play_lyrics[now]); now++; } } }
'프로그래밍 언어 > 개발 프로그램' 카테고리의 다른 글
NRF52832 보드 ADC 변환 프로그램 결과 (0) | 2017.02.22 |
---|---|
짝맞추기 게임 Ver 0.7 / 미니게임 (0) | 2016.09.07 |
C언어로 제작한 테트리스 (0) | 2016.04.07 |
2015_12_30일 개인 프로젝트 결과 보고서 (0) | 2016.03.31 |
n:m 다중 채팅 어플리케이션 (0) | 2016.02.01 |