2014-05-07 104 views
0

我正在嘗試從文件(文本)字節讀取並放入sndbuffer。但這是印刷垃圾。爲什麼這樣?從文件中讀取並放入二維緩衝區

此外,由於我正在學習使用文件,因此歡迎任何關於代碼改進的建議。

unsigned char sndbuffer[100][1560]; 
int main() 
{ 
FILE *fp; 
unsigned char filename[50]; 
unsigned char ch; 
unsigned int i=0,j=0; 
printf("\nEnter file name(with extn)\t"); 
scanf("%s",filename); 
fp=fopen(filename, "r"); 
while(ch=fgetc(fp)) 
{ 
    memcpy(&sndbuffer[i][j],&ch,1); 
    printf("%c",sndbuffer[i][j]); 
    j=(++j)%1560; 

    if(j==0) 
    i++; 
    if(i==100) 
    break; 

} 

printf("\nOUT OF LOOP"); 
return 0; 
} 

謝謝:)你的代碼

+1

「文件名」的內存分配?這就是爲什麼你需要檢查文件是否被成功打開的原因 – GoldRoger

+1

在C程序中檢查錯誤是*不可*。 EOF是*不* 0。 –

+0

完成。有一些文件大小的問題。謝謝:) – user3433848

回答

1

的一個問題是這種說法

unsigned char *filename; 

這定義一個指針unsigned char,但是,你需要一個字符數組來存儲文件名。更改爲

#define MAXLEN 50+1 // +1 for the terminating null byte 

char filename[MAXLEN]; 
+0

是的。謝謝。還是垃圾! – user3433848