C语言实现音乐播放器-MCI mcisendString

C语言实现音乐播放器-MCI mcisendString,第1张

本次的实训的mp3播放器主要涉及到的内容如下:

MCI API :负责音乐的播放,暂停,继续,停止等功能

2)链表的构建

3)文件读取问题

文件存储有很多种方式,将数据写入文件时可以以空格或者回车为结束。

在读取时,不管是硬fscanf还是gets()进行读取,都要注意一点,以gets为例,gets是读到回车符号结尾,但是回车符号会被读取进去。也就是说,需要将读取到的字符串进行处理,最后一个字符要置为‘0’一定要注意这个问题。

还有一个_finddata这个结构体的问题:

此外由于在win10系统下不知道是我个人原因还是大部分人都有的的问题在编译时findnext会报错, 因为_findnext()返回类型为intptr_t而非long型,从“intptr_t”转换到“long”丢失了数据。只需要把一般写的:

long _findfirst( char *filespec, struct _finddata_t fileinfo );

返回值:

如果查找成功的话,将返回一个long型的唯一的查找用的句柄(就是一个唯一编号)。这个句柄将在_findnext函数中被使用。若失败,则返回-1。

参数:

filespec:标明文件的字符串,可支持通配符。比如: .c,则表示当前文件夹下的所有后缀为C的文件。

fileinfo :这里就是用来存放文件信息的结构体的指针。这个结构体必须在调用此函数前声明,不过不用初始化,只要分配了内存空间就可以了。

函数成功后,函数会把找到的文件的信息放入这个结构体中。

int _findnext( long handle, struct _finddata_t *fileinfo )

返回值:

若成功返回0,否则返回-1。

参数:

handle:即由_findfirst函数返回回来的句柄。

fileinfo:文件信息结构体的指针。找到文件后,函数将该文件信息放入此结构体中。

int _findclose( long handle )

返回值:成功返回0,失败返回-1。

参数: handle :_findfirst函数返回回来的句柄

一下为一个简化的版本主要是文件 *** 作:

function.h

function.c

main.c

#include <dos.h>

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

#include <string.h>

#include <conio.h>

void main()

{

void set(int *set1,int *set2,char *f,char *n,int *t,int rate,int num)

void music(int *set1,int *set2,int num)

int flag=0

FILE *f1

int t

int rate

char in[3]

int i

int n

char *frequency

char *note

int *time

int *set1

int *set2

int menu

int FileName[30]

while(1)

{

f1=NULL

flag=0

frequency=NULL

note=NULL

time=NULL

set1=NULL

set2=NULL

i=n=0

printf("1 播放程序自带的音乐music1\n")

printf("2 播放程序自带的音乐music2\n")

printf("3 通过输入文件名进行音乐的播放\n")

printf("4 退出\n")

while(1)

{

scanf("%d",&menu)

if(menu==1)

{

strcpy(FileName,"music1.txt")

break

}

if(menu==2)

{

strcpy(FileName,"music2.txt")

break

}

if(menu==3)

{

scanf("%s",FileName)

break

}

if(menu==4)

exit(1)

}

printf("\n该文件的音乐编码如下:\n")

/*-------------------------------------*/

if((f1=fopen(FileName,"r"))==NULL)

{

printf("不能打开文件!\n")

exit(1)

}

/*-------------------------------------*/

fscanf(f1,"%d",&rate)

frequency=(char *)malloc(sizeof(char))

note=(char *)malloc(sizeof(char))

time=(int *)malloc(sizeof(int))

while(!feof(f1)&&flag!=1)

{

fscanf(f1,"%s%d",in,&t)

if(t!=-1)

{

printf("%s %d ",in,t)

frequency[i]=in[0]

note[i]=in[1]

time[i]=t

i++

n++

frequency=(char *)realloc(frequency,(i+1)*sizeof(char))

note=(char *)realloc(note,(i+1)*sizeof(char))

time=(int *)realloc(time,(i+1)*sizeof(int))

}

else

flag=1

}

fclose(f1)

for(i=0i<ni++)

{

switch(frequency[i])

{

case 'h':

switch(note[i])

{

case '1':

note[i]=523

time[i]=time[i]*rate

break

case '2':

note[i]=587

time[i]=time[i]*rate

break

case '3':

note[i]=659

time[i]=time[i]*rate

break

case '4':

note[i]=698

time[i]=time[i]*rate

break

case '5':

note[i]=784

time[i]=time[i]*rate

break

case '6':

note[i]=880

time[i]=time[i]*rate

break

case '7':

note[i]=988

time[i]=time[i]*rate

break

}

break

case 'm':

switch(note[i])

{

case '1':

note[i]=262

time[i]=time[i]*rate

break

case '2':

note[i]=296

time[i]=time[i]*rate

break

case '3':

note[i]=330

time[i]=time[i]*rate

break

case '4':

note[i]=349

time[i]=time[i]*rate

break

case '5':

note[i]=392

time[i]=time[i]*rate

break

case '6':

note[i]=440

time[i]=time[i]*rate

break

case '7':

note[i]=494

time[i]=time[i]*rate

break

}

break

case 'l':

switch(note[i])

{

case '1':

note[i]=131

time[i]=time[i]*rate

break

case '2':

note[i]=147

time[i]=time[i]*rate

break

case '3':

note[i]=165

time[i]=time[i]*rate

break

case '4':

note[i]=175

time[i]=time[i]*rate

break

case '5':

note[i]=196

time[i]=time[i]*rate

break

case '6':

note[i]=220

time[i]=time[i]*rate

break

case '7':

note[i]=247

time[i]=time[i]*rate

break

}

break

}

for(i=0i<ni++)

{

sound(note[i])

delay(time[i])

nosound()

}

free(frequency)

free(note)

free(time)

free(set1)

free(set2)

putchar('\n')

}

}

}

mp3

...\acinclude.m4

...\aclocal.m4

...\AUTHORS

...\base

...\....\beos

...\....\....\include

...\....\....\.......\beosprefs.h

...\....\....\.......\beosthread.h

...\....\....\.......\beos_priority.h

...\....\....\.......\help.h

...\....\....\.......\mutex.h

...\....\....\.......\semaphore.h

...\....\....\.......\utility.h

...\....\....\.......\win32impl.h

...\....\....\prj

...\....\....\...\FreeAmpBaseLib_cvs.proj

...\....\....\...\FreeAmp_cvs.proj

...\....\....\...\MoveAddonsToTheirHome.post

...\....\....\src

...\....\....\...\beosprefs.cpp

...\....\....\...\beosthread.cpp

...\....\....\...\bootstrap.cpp

...\....\....\...\debug.cpp

...\....\....\...\mutex.cpp

...\....\....\...\semaphore.cpp

...\....\....\...\utility.cpp

...\....\....\...\volume.cpp

...\....\....\...\win32impl.cpp

...\....\configure

...\....\COPYING

...\....\include

...\....\.......\database.h

...\....\.......\debug.h

...\....\.......\downloadformat.h

...\....\.......\downloadmanager.h

...\....\.......\errors.h

...\....\.......\event.h

...\....\.......\eventdata.h

...\....\.......\facontext.h

...\....\.......\hashtable.h

...\....\.......\log.h

...\....\.......\metadata.h

...\....\.......\musiccatalog.h

...\....\.......\player.h

...\....\.......\playlist.h

...\....\.......\playlistformat.h

...\....\.......\plmevent.h

...\....\.......\portabledevice.h

...\....\.......\preferences.h

...\....\.......\prefixprefs.h

...\....\.......\properties.h

...\....\.......\propimpl.h

...\....\.......\queue.h

...\....\.......\registrar.h

...\....\.......\registry.h

...\....\.......\thread.h

...\....\.......\undomanager.h

...\....\.......\updatemanager.h

...\....\.......\utility.h

...\....\INSTALL

...\....\install-freeamp

...\....\mac

...\....\...\prj

...\....\...\...\freeamp.prj

...\....\...\res

...\....\...\...\FreeAmp.ppob

...\....\...\...\FreeAmp.rsrc

...\....\...\src

...\....\...\...\CFreeAmp.cpp

...\....\...\...\CFreeAmp.h

...\....\NEWS

...\....\README

...\....\src

...\....\...\database.cpp

...\....\...\debug.cpp

...\....\...\downloadmanager.cpp

...\....\...\errors.cpp

...\....\...\log.cpp

...\....\...\musiccatalog.cpp

...\....\...\player.cpp

...\....\...\playlist.cpp

...\....\...\preferences.cpp

...\....\...\prefixprefs.cpp

...\....\...\propimpl.cpp

...\....\...\registrar.cpp

...\....\...\registry.cpp

...\....\...\thread.cpp

...\....\...\undomanager.cpp

...\....\...\updatemanager.cpp

...\....\...\utility.cpp

...\....\unix

...\....\....\include

...\....\....\.......\help.h

...\....\....\.......\unixprefs.h

...\....\....\.......\win32impl.h

...\....\....\linux

...\....\....\.....\include

...\....\....\.....\.......\linuxthread.h

...\....\....\.....\.......\mutex.h


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11873480.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存