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

时间:2014-05-28 07:12:22

标签: c++

所以我试图读取每行中包含8个字符的1024行文件,我试图将所有内容存储在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。

3 个答案:

答案 0 :(得分:1)

你在最后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;
}

答案 1 :(得分:1)

您在else if

的正文周围缺少大括号
else if (p==7) {
    p=0;q=q+1;
}

答案 2 :(得分:0)

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

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);