c语言写入磁盘文件数据时只写出了问号,c语言 五子棋,在写入文件时出bug,总是写入一堆问号,求检查,在线等,由于字数限制,只展示了相关函数...

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

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值