⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music.c

📁 Many C samples. It is a good sample for students to learn C language.
💻 C
字号:
#include <stdio.h>
#include <dos.h>

#define INTR 0X1C    /* Ngat dong ho */

#ifdef __cplusplus
    #define __CPPARGS ...
#else
    #define __CPPARGS
#endif

extern unsigned _heaplen = 1024*8;
extern unsigned _stklen  = 1024*4;

typedef struct tagMUSIC {
  unsigned int node;  /* Tan so - not nhac */
  unsigned int ngung; /* Tinh theo chu ky clock */
} MUSIC;

MUSIC bannhac[1000];

void interrupt ( *oldhandler)(__CPPARGS);

int count=0;
int num_node;
int cur_node = 0;

void interrupt handler(__CPPARGS)
{
  if (count == 0)
    sound(bannhac[cur_node].node);
  count++;
  if (count >= bannhac[cur_node].ngung)
  {
    nosound();
    count = 0;
    cur_node++;
    if (cur_node >= num_node)
      cur_node = 0;
  }
  oldhandler();
}

void main(int argc, char *argv[])
{
  FILE *fp;
  int i;

  if (argc < 2)
  {
    printf("\n\nCach dung : MUSIC <tap tin nhac>");
    return;
  }
  if ((fp = fopen(argv[1], "rt")) == NULL)
  {
    printf("\n\nKhong the mo tap tin %s", argv[1]);
    return;
  }
  fscanf(fp, "%u", &num_node);
  if (num_node > 1000)
    num_node = 1000;
  for (i=0; i<num_node; i++)
    fscanf(fp, "%u %u", &(bannhac[i].node), &(bannhac[i].ngung));
  fclose(fp);

  cur_node = 0;
  oldhandler = getvect(INTR);
  setvect(INTR, handler);

  keep(0, (_SS + (_SP/16) - _psp));
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -