从文件中读取并放入二维缓冲区

时间:2014-05-07 08:12:44

标签: c arrays file

我试图从文件(文本)字节读取并放入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 个答案:

答案 0 :(得分:1)

您的代码存在的一个问题是此声明

unsigned char *filename;

这定义了一个指向unsigned char的指针,但是,您需要一个char数组来存储文件名。将其更改为

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

char filename[MAXLEN];