【发布时间】:2014-12-28 17:36:47
【问题描述】:
我在编写命令行程序以在计算后写入新文件之前使用文本文件作为输入参数时遇到问题。我当前的程序如下所示:
/* midi2hzf.c */
/* Converts midi information files in the format midiNote - midiVelocity - duration(msecs)
into a frequency information file formatted frequency - ampFactor - duration(msecs) */
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
float Hz, ampFat;
int midi, velo, durMidi, durHz;
float calHz(float Hz, int midi){
Hz = pow(2, ((midi-69)/12))*440;
return Hz;
}
float calAmp(float ampFat, int velo){
if (velo >= 0 && velo <= 127){
ampFat = velo/127;
return ampFat;
}else{
return 1;
}
}
int main(int argc, char *argv[]){
FILE *midiFile;
midiFile = fopen("testmidi.txt", "r");
FILE *hzFile;
hzFile = fopen("testhz.txt", "w");
if(midiFile==NULL||hzFile==NULL){
printf("File error\n");
return 1;
}else{
while(!feof(midiFile)){
fscanf(midiFile, "%d%d%d", &midi,&velo,&durMidi);
durMidi = durHz;
calHz(Hz, midi);
calAmp(ampFat, velo);
fprintf(hzFile, "%f\t%f\t%d\n", Hz, ampFat, durHz);
printf("%f\t%f\t%d\n", Hz, ampFat, durHz);
}
}
fclose(hzFile);
fclose(midiFile);}
每次我运行程序,输出文件都包含“0.0000 0.0000 0”,这显然不是想要的输出。据我所知,我的函数被正确调用并且所有代码都有意义,尽管输出始终是错误的。
【问题讨论】:
-
检查
fscanf的返回值。尝试调试您的代码。 -
我将如何检查它的返回?