c语言 五子棋,在写入文件时出bug,总是写入一堆问号,求检查,在线等,由于字数限制,只展示了相关函数0
int XuanZe()
{
printf("请选择:游戏/p;读谱/r");
scanf("%c",&xz);
return xz;
}
//玩游戏函数
int PlayGame()
{
while(TRUE)
{
Input(); //输入坐标
system("CLS");//清屏
Welcome();
QiPan(); //打印棋谱
getchar();
xh=OverMessage();
if(xh==1) break;
xh=Again();
if(xh==1) break;
}
}
//读取棋谱函数
int ReadGame()
{
ChuShiHua();//使所有坐标初始化
fp=fopen("zuobiao.txt","r"); //打开在玩游戏中保存的文件
rewind(fp);
while(TRUE)
{
DuPu();
getchar();
}
}
int ChuShiHua()
{
int i,j;
for(i=1;i<=15;i++) for(j=1;j<=15;j++) {WZW[i][j]=0;WZB[i][j]=0;}
}
int Input()
{ fp=fopen("zuobiao.txt","a+");
printf("请输入坐标:\n");
printf("x=");
scanf("%d",&x);
printf("y=");
scanf("%d",&y);
while(x<1||x>15||y<1||y>15) {
printf("Error!");
printf("x=");
scanf("%d",&x);
printf("y=");
scanf("%d",&y);
}
while(CF[x][y]==1){
printf("Overlap!\n");
printf("x=");
scanf("%d",&x);
printf("y=");
scanf("%d",&y);
}
//p为类似哨兵的东西,利用其奇偶性,分别将一赋值给玩家一和玩家二的坐标
fprintf(fp,"%d %d %d\n",x,y,p); //在这里出了问题,总是得不到输入的坐标,估计读取坐标时也有问题
if(p%2==0) WZB[x][y]=1;
else WZW[x][y]=1;
p++;
CF[x][y]=1;
}
int Again()
{
char q;
printf("继续游戏/Enter;离开游戏/q+Enter.");
scanf("%c",&q);
if(q=='q') return 1;
else return 0;
}
int DuPu()
{
int i,j,x1,y1,p1;
fscanf(fp,"%d,%d,%d",&x1,&y1,&p1);//读取坐标,依次显示(想把棋谱一手一手显示出来)
printf(" 1 2 3 4 5 6 7 8 9 101112131415\n");
for(i=1;i<=15;i++)
{
printf("%3d ",i);
for(j=1;j<=14;j++)
{
if(i==x1&&j==y1&&p1%2==0) printf("●");
else if(i==x1&&j==y1&&p1%2==1) printf("○");
else printf("+ ");
}
for(j=15;j<=15;j++)
{
if(i==x1&&j==y1&&p%2==0) printf("●\n");
else if(i==x1&&j==y1&&p1%2==1) printf("○\n");
else printf("+ \n");
}
}
}