C语言...为什么运行时只有第一行出错阿

#include <stdio.h>
struct data1
{
int slot[3];
int flag;
int ftime[5];
int ltime[5];
char carnumber[7];
};

void main()
{
int i,j,row,col;
FILE *slot;
char ch;
char F1[8][20],F2[8][20],F3[8][20];
struct data1 park[480];

for(i=0;i<8;i++)
{
for(j=0;j<20;j++)
{
F1[i][j]=' ';
F2[i][j]=' ';
F3[i][j]=' ';
}
}
if ((slot=fopen("parking.txt","r"))==NULL)
{
printf("Cannot open file!\n");
exit();
}
fseek(slot,0L,SEEK_SET);
for(i=0;i<480;i++)
{
for(j=0;j<3;j++)
{
fscanf(slot,"%d",&park[i].slot[j]);
fseek(slot,1L,SEEK_CUR);
}
fscanf(slot,"%d",&park[i].flag);
if(park[i].flag==0)
{
row=park[i].slot[1];
col=park[i].slot[2];
switch(park[i].slot[0])
{
case 1: F1[row][col]='0';break;
case 2: F2[row][col]='0';break;
case 3: F3[row][col]='0';break;
}
do{ch=getc(slot);}while(ch!='\n');
}
}
printf("The empty slots on F1 are shown as following:\n");
for(i=0;i<8;i++)
{
for(j=0;j<20;j++)
printf("%c",F1[i][j]);
printf("\n");
}
printf("The empty slots on F2 are shown as following:\n");
for(i=0;i<8;i++)
{
for(j=0;j<20;j++)
printf("%c",F2[i][j]);
printf("\n");
}
printf("The empty slots on F3 are shown as following:\n");
for(i=0;i<8;i++)
{
for(j=0;j<20;j++)
printf("%c",F3[i][j]);
printf("\n");
}
if ( fclose(slot)!=0 )
printf("Error closing the file!\n");
exit();
}

第1个回答  推荐于2016-07-29
  #include <stdio.h>

  struct data1
  {
  int slot[3];
  int flag;
  int ftime[5];
  int ltime[5];
  char carnumber[7];
  };

  void main()
  {
  int i,j,row,col;
  FILE *slot;
  char ch;
  char F1[8][20],F2[8][20],F3[8][20];
  struct data1 park[480];
  clrscr();//clear screen
  for(i=0;i<8;i++)
  {
  for(j=0;j<20;j++)
  {
  F1[i][j]=' ';
  F2[i][j]=' ';
  F3[i][j]=' ';
  }
  }
  if ((slot=fopen("parking.txt","r"))==NULL)
  {
  if ((slot=fopen("parking.txt","w+"))==NULL)
  {
  printf("Cannot open file!\n");
  exit(0);
  }
  printf("Open file Successful!\n");
  }
  fseek(slot,0L,SEEK_SET);
  for(i=0;i<480;i++)
  {
  for(j=0;j<3;j++)
  {
  fscanf(slot,"%d",&park[i].slot[j]);
  fseek(slot,1L,SEEK_CUR);
  }
  fscanf(slot,"%d",&park[i].flag);
  if(park[i].flag==0)
  {
  row=park[i].slot[1];
  col=park[i].slot[2];
  switch(park[i].slot[0])
  {
  case 1: F1[row][col]='0';break;
  case 2: F2[row][col]='0';break;
  case 3: F3[row][col]='0';break;
  }
  do{ch=getc(slot);}while(ch!='\n');
  }
  }
  printf("The empty slots on F1 are shown as following:\n");
  for(i=0;i<8;i++)
  {
  for(j=0;j<20;j++)
  printf("%c",F1[i][j]);
  printf("\n");
  }
  printf("The empty slots on F2 are shown as following:\n");
  for(i=0;i<8;i++)
  {
  for(j=0;j<20;j++)
  printf("%c",F2[i][j]);
  printf("\n");
  }
  printf("The empty slots on F3 are shown as following:\n");
  for(i=0;i<8;i++)
  {
  for(j=0;j<20;j++)
  printf("%c",F3[i][j]);
  printf("\n");
  }
  if ( fclose(slot)!=0 )
  printf("Error closing the file!\n");
  exit(0);
  }

  以上是帮你改好的代码,测试已通过
  修改了以下几行的代码:
  if ((slot=fopen("parking.txt","r"))==NULL)
  {
  printf("Cannot open file!\n");
  exit();
  }
  运行出错的原因是parking.txt文件你以只读方式打开,但如果之前parking.txt不存在的话,就无法打开!本回答被提问者采纳
第2个回答  2009-01-05
程序本身没错,可能是你没 事先创建 txt文件
第3个回答  2009-01-04
查询
第4个回答  推荐于2016-07-29
  #include <stdio.h>

  struct data1
  {
  int slot[3];
  int flag;
  int ftime[5];
  int ltime[5];
  char carnumber[7];
  };

  void main()
  {
  int i,j,row,col;
  FILE *slot;
  char ch;
  char F1[8][20],F2[8][20],F3[8][20];
  struct data1 park[480];
  clrscr();//clear screen
  for(i=0;i<8;i++)
  {
  for(j=0;j<20;j++)
  {
  F1[i][j]=' ';
  F2[i][j]=' ';
  F3[i][j]=' ';
  }
  }
  if ((slot=fopen("parking.txt","r"))==NULL)
  {
  if ((slot=fopen("parking.txt","w+"))==NULL)
  {
  printf("Cannot open file!\n");
  exit(0);
  }
  printf("Open file Successful!\n");
  }
  fseek(slot,0L,SEEK_SET);
  for(i=0;i<480;i++)
  {
  for(j=0;j<3;j++)
  {
  fscanf(slot,"%d",&park[i].slot[j]);
  fseek(slot,1L,SEEK_CUR);
  }
  fscanf(slot,"%d",&park[i].flag);
  if(park[i].flag==0)
  {
  row=park[i].slot[1];
  col=park[i].slot[2];
  switch(park[i].slot[0])
  {
  case 1: F1[row][col]='0';break;
  case 2: F2[row][col]='0';break;
  case 3: F3[row][col]='0';break;
  }
  do{ch=getc(slot);}while(ch!='\n');
  }
  }
  printf("The empty slots on F1 are shown as following:\n");
  for(i=0;i<8;i++)
  {
  for(j=0;j<20;j++)
  printf("%c",F1[i][j]);
  printf("\n");
  }
  printf("The empty slots on F2 are shown as following:\n");
  for(i=0;i<8;i++)
  {
  for(j=0;j<20;j++)
  printf("%c",F2[i][j]);
  printf("\n");
  }
  printf("The empty slots on F3 are shown as following:\n");
  for(i=0;i<8;i++)
  {
  for(j=0;j<20;j++)
  printf("%c",F3[i][j]);
  printf("\n");
  }
  if ( fclose(slot)!=0 )
  printf("Error closing the file!\n");
  exit(0);
  }

  以上是帮你改好的代码,测试已通过
  修改了以下几行的代码:
  if ((slot=fopen("parking.txt","r"))==NULL)
  {
  printf("Cannot open file!\n");
  exit();
  }
  运行出错的原因是parking.txt文件你以只读方式打开,但如果之前parking.txt不存在的话,就无法打开!本回答被提问者采纳
第5个回答  2009-01-05
程序本身没错,可能是你没 事先创建 txt文件
第6个回答  2009-01-04
查询
相似回答
大家正在搜