[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
啊,那又不会自动展开或插值
mciSendString("play stra", NULL, 0, NULL);中的play stra就只是play stra,意思是播放stra这个文件

这里想要用变量挺麻烦的,而且要是还要兼顾ansi和unicode的话,倒是c++的string貌似可以直接相加(像这样:"play "+str)

总之试试参考下面的
  1. #pragma comment(lib,"winmm.lib")
  2. #pragma comment(lib,"user32.lib")
  3. TCHAR *szBuffer=(TCHAR *)calloc(1024,sizeof(TCHAR));
  4. wsprintf(szBuffer,TEXT("%s 哈哈%d.mp3"),TEXT("close"),a);
  5. mciSendString(szBuffer, NULL, 0, NULL);
  6. wsprintf(szBuffer,TEXT("%s 哈哈%d.mp3"),TEXT("play"),a);
  7. mciSendString(szBuffer, NULL, 0, NULL);  }
复制代码
1

评分人数

TOP

回复 3# zzz19760225


   
变量szBuffer是动态分配的,用完后free一下或许会更好点

还有,反正都用了微软msvc专属的东西了

可以将
  #ifdef UNICODE
  wchar_t str[1024]={0};
  #else
  char str[1024]={0};
  #endif

换成
TCHAR str[1024]={0};
如果不用UNICODE的话,也可以直接换成 char str[1024]={0};

同样的,可以将
   #ifdef UNICODE
   swprintf(str,111,L"%d.jpg",a);
   #else
   sprintf(str,"%d.jpg",a);
   #endif



   #ifdef UNICODE
   swprintf(str,111,L"%d.txt",a);
   #else
   sprintf(str,"%d.txt",a);
   #endif

换成
wsprintf(str,TEXT("%d.jpg"),a);

wsprintf(str,TEXT("%d.txt"),a);
不用UNICODE的话,就直接用sprintf(str,"%d.jpg",a);和sprintf(str,"%d.txt",a);

TOP

回复 5# zzz19760225


   
line那个应该没问题,问题是那个file,因为file还没有使用就free了(也不知道能不能free)
还有line是在if (file) {}之间声明的 ,是个自动变量(局部变量),因此if (file) {}之外是看不见的
同理file是第一个while的自动变量(局部变量)
1

评分人数

    • zzz19760225: 说自动局部变量没问题,我就放心了技术 + 1

TOP

返回列表