0
double buf[1000];
double value;
double *ptr = &value;
for(i=0; i < no_of_iterations; i++) {
for(j=0; j < chunkSize; j++) {
num_bytes_read = fread(ptr,1,pcm_sample_size,fptr); //read one sample
if(num_bytes_read == 2) {
sum_sq += (*ptr) * (*ptr); //calculate power of each sample
buf[j] = *ptr;
}
else {
flag = 0;
break;
}
}
if(!flag) {
printf("exiting loop");
break;
}
power = sum_sq/chunkSize;//calculate rms value of signals for chunkSize samples
if(power < threshold) //compare with some value
printf("power is lower than threshold"); //silence-don't write
else { //write
ret = fwrite(buf,1,pcm_sample_size,optr);
if(ret != 1)
printf("error in fwrite %d", ret);
}
}
printf("done");
fclose(fptr);
fclose(optr);
以上是我寫的一些pcm樣本取決於某些條件的代碼,但我得到fread錯誤。 控件不會輸入if(num_bytes_read == 2)塊。我認爲這個錯誤是因爲我想讀取大小爲2個字節的pcm樣本,我需要在某處存儲它。可以使用哪種數據類型來存儲2字節的pcm值(pcm值不是int值)。 請指教。fread失敗的C程序
我需要第二個和第三個參數是相同的。那麼,我怎樣才能改變ptr,使它是一個2字節的變量? ok點指出,是的,我已經初始化sum_sq爲0.0 – Namratha 2011-03-11 10:44:23
這是fread(membuf,sizeof_item,num_items,fptr)。你正在讀1倍,所以它應該是fread(ptr,sizeof(double),1,fptr)。它只會在你的情況下返回1或0。 – CashCow 2011-03-11 11:18:32
糟糕,是的,你是對的。但輸出文件仍然是0字節 – Namratha 2011-03-11 11:42:25