Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从文件读取并放入二维缓冲区_C_Arrays_File - Fatal编程技术网

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

C 从文件读取并放入二维缓冲区,c,arrays,file,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"); s

我试图从一个文件(文本)读取字节,并放入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;
}

谢谢:)

您的代码的一个问题是这句话

unsigned char *filename;
这定义了一个指向
无符号字符的指针,但是,您需要一个字符数组来存储文件名。换成

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

char filename[MAXLEN];

文件名的内存分配
?这就是为什么您需要检查文件是否已成功打开。在C程序中进行错误检查不是可选的。EOF不是0.0。存在一些文件大小问题。谢谢:)