У меня смутные воспоминания о требовании, которое вы называете fflush
до fseek
, но у меня нет моей копии стандарта C, доступного для проверки. (Если вы этого не сделаете, это будет определено неопределенное поведение или реализация, или что-то в этом роде.) Общий стандарт Unix указывает, что:
Если самая последняя операция, отличная от ftell () на данном потоке - fflush (), смещение файла в описании открытого файла должно быть скорректировано с учетом местоположения, указанного fseek ().
[...]
Если поток записывается и данные буферизации не были записаны в базовый файл, fseek () приведет к записи неписаных данных в файл и отметит поля st_ctime и st_mtime файла для обновления.
< / blockquote>Это отмечено как расширение стандарта ISO C, поэтому вы не можете рассчитывать на него, кроме как на платформах Unix (или на других платформах, которые предоставляют аналогичные гарантии).
Вы можете вспомнить правильный ответ, поместив его переменную в более высокую область видимости.
Затем вы можете проверить, совпадает ли идентификатор нажатой кнопки со случайным звуком.
Наконец, вы можете использовать аудио теги и изменить источник, чтобы воспроизводить звук - вместо использования тега embed.
HTML
<h2 id="feedback">Listen to the sound and click a button</h2>
<div id="fagott">fagott image</div>
<div id="floyte">floyte image</div>
<audio id="player" src="">
JS
let randomSound = ""
let fagottEl = document.querySelector("#fagott")
let floyteEl = document.querySelector("#floyte")
let sounds = ["fagott","floyte","klarinett","obo","valthorn"]
let player = document.getElementById("player")
let feedback = document.getElementById("feedback")
function chooseRandomSound(){
randomSound = sounds[Math.floor(Math.random()*sounds.length)];
player.src = "Vedlegg_V18/" + randomSound + ".mp3"
player.play()
}
fagottEl.addEventListener("click", function(e) {
checkSound(e)
});
floyteEl.addEventListener("click", function(e) {
checkSound(e)
});
function checkSound(e){
if(e.target.id == randomSound) {
feedback.innerHTML = "Correct!"
} else {
feedback.innerHTML = "Wrong, it was a " + randomSound
}
}
chooseRandomSound()
Вы можете попробовать рабочий код на JSFiddle