输入文件路径时,直接输入的可以正常使用,通过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

Strcat遇到除单字节占位,数字字母外的任何符号都会中断连接!直接写路径的话,\这个符号需要写两个才算一个,这个符号占位一个字节,可以用Strcat连接,只需要写一个!所以仔细看完我说的,你应该明白了,