文件输入的访问冲突读取位置

Access violation reading location for file input

本文关键字:读取 位置 访问冲突 输入 文件      更新时间:2023-10-16

所以我试图读取这个1024行文件,每行有8个字符,我试图将所有这些存储在一个2d字符数组中,每个元素包含一个8个字符串这是我的

char ch=" ";
char page[1024][9];
while(i!=32767)
{

 ch = fgetc(fp);
 printf("%c",ch);
 i++;
 if(ch==EOF)
 {
   break;
 }
 page[q][p]=ch;
   if (p<7)
    p=p+1;
   else if (p==7)
    {p=0;q=q+1;}

  }

我在输出中打印了大约50-100行2d数组,但之后它停止并给我一个错误。在C1.exe中0x5f942174的未处理异常:0xC0000005:访问冲突读取位置0x00000000.

最后一个if的正文周围缺少大括号;基本上你的代码和

是一样的
if (p<7)
{
    p=p+1;
}
else
{
    p=0;
}
q=q+1;

表示q在每次迭代中递增,而不仅仅在p达到7时递增。将其改为

if (p<7)
{
    p=p+1;
}
else
{
    p=0;
    q=q+1;
}

您缺少else if主体周围的大括号:

else if (p==7) {
    p=0;q=q+1;
}

这就是你想要的代码:请阅读下面的注释代码

char ch=' '; // changed ch=" " to ch= ' '
char page[1023][7]; //changed to 1024 line and 8 char.0-1023 and 0-7 indexes
int q=0,p=0;
do {
    ch = fgetc(fp);
    printf("%c",ch);
    page[q][p]=ch;
        p=p+1;
    if (p>7) {
        p=0;
        q=q+1;
    }
} while(ch!=EOF);