输入文件路径时,直接输入的可以正常使用,通过strcat拼接而成的无法使用;并且有时直接输入路径也无法使用,如何解决?

问题遇到的现象和发生背景

本函数意在实现音乐播放,通过键入音乐文件名称,达到播放的目的。现在输入文件路径时,直接输入的可以正常使用,通过strcat拼接而成的无法使用;并且有时直接输入路径也无法使用。

问题相关代码,请勿粘贴截图
#include<stdio.h>
#include "windows.h"
#include<mmsystem.h>
#pragma comment(lib,"Winmm.lib")

void PlayMusic(const char* FileName)
{
char cmdString[70]="open ";
strcat(cmdString,FileName);
strcat(cmdString," alias bkmusic");
printf("%s",cmdString);//测试
mciSendString("close bkmusic",NULL,0,NULL);
mciSendString(cmdString,NULL,0,NULL);
mciSendString("play bkmusic",NULL,0,NULL);
}
void F1_2Music_Operation(void)
{
    

    char input_musicname[20];
    char FileName[40]="D:\\music\\";
//gets(input_musicname);
    

     strcat(FileName,"You_Never_Leave");
      strcat(FileName,".mp3");
printf("%s",FileName);     
      PlayMusic(FileName);    

}
void main()
{
//    PlayMusic("D:\\music\\You_Never_Leave.mp3");    
F1_2Music_Operation();
}
//open D:\music\You_Never_Leave.mp3 alias bkmusic//直接输入
//open D:\music\You_Never_Leave.mp3 alias bkmusic//通过strcat拼接而成


运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

字符串"D:\music\You_Never_Leave.mp3 alias bkmusic"的长度大于40-1