c编程中的数码钢琴(使用Beep功能)

Digital piano(using Beep function) in c programming

我想制作一个当我输入一个键时发出声音的程序。

过程是这样的 -> 从 .txt 文件中获取关于 key & frequency 的数据并将该数据存储在数组中。然后,使用我制作的功能'findFrequency'和'playpiano',我想在输入按键时发出声音。

我做的代码是这样的:

#include <stdio.h>
#include <windows.h>
#include <stdbool.h>

#define NUM_NOTES 8

char key_table[NUM_NOTES];
float freq_table[NUM_NOTES];

float findFrequency(const char note);
void playpiano(void);

void main()
{
FILE *input_file = fopen("digitalpiano.txt", "r");

int num_keys;
fscanf(input_file, "%d\n", &num_keys);

printf("%d\n", num_keys);

for (int i = 0; i < NUM_NOTES; i++)
{
    char key; // I think I can delete this code
    float freq; // I think I can delete this code

    fscanf(input_file, "%c %f\n", &key_table[i], &freq_table[i]);
    printf("%c %.3f\n", key_table[i], freq_table[i]);

}

fclose(input_file);

while (true)
    playpiano;

}


float findFrequency(char note)
{
for (int i = 0; i < NUM_NOTES; i++)
{
    if (key_table[i] == note) return freq_table[i];
}
return 0.0f;
}

void playpiano(void)
{
char ch = getch();
Beep(findFrequency(ch), 500);

return;
}

但是当我启动这段代码时,我可以显示来自 txt 文件的数据。但是我输入一个键的时候没有声音,所以我什么也听不到。

而 digitalpiano.txt 文件是这样的:

8
a 261.626
s 293.665
d 329.628
f 349.228
g 391.995
h 440.000
j 493.883
k 523.251

您没有打电话给 playpiano;您需要包括括号:playpiano();.