TC文件方面的问题,这两个代码有什么区别?

[复制链接]
查看11 | 回复1 | 2008-8-11 23:17:11 | 显示全部楼层 |阅读模式
哪位C语言高手来比较一下这两个程序的不同,小弟不胜感激。
目的是从文件map.txt中读取矩阵填入二维数组中,并根据文件内容(0和1),对棋盘格进行填充。
为啥第一个不好用而第二个却可以运行?
所有的报错都在pm[j]=fgetc(fp);这一行
ps:
是传递参数有问题吗?
还是在子函数中不能读取文件?
程序一:
#include
#include
void fill(char *pm[][])
{
FILE *fp;
int i,j,gd,gm;
if((fp=fopen("map.txt","r"))==NULL)
{
printf("cannot open map file\nPress any key to exit");
getch();
exit(0);
}
for(i=0;i
#include
void main()
{
FILE *fp;
int i,j,gd,gm;
char pm[6][6];
if((fp=fopen("map.txt","r"))==NULL)
{
printf("cannot open map file\nPress any key to exit");
getch();
exit(0);
}
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{pm[j]=fgetc(fp);}/*把文件内的字符读入数组内*/
fgetc(fp);/*抵消每一行末尾的回车*/
}
gd=DETECT;
registerbgidriver(EGAVGA_driver);
initgraph(&gd,&gm,"");
setbkcolor(WHITE);
setcolor(LIGHTBLUE);
for(i=10;i<=90;i+=10)
{
for(j=10;j<=90;j+=10)
{
rectangle(i,j,(i+10),(j+10));/*画格子*/
if(pm[(j/10)][(i/10)]=='1'&&i<=50&&j<=50)
{
setfillstyle(1,RED);
floodfill((i+2),(j+2),LIGHTBLUE);
}
}
}
getch();
closegraph();
}
map.txt内容:
100000
010000
001000
000100
000001
111111

回复

使用道具 举报

千问 | 2008-8-11 23:17:11 | 显示全部楼层
char *pm[][]这个参数做为二维数组传进去时会丢失一维的长度改成char (*pm)[10];这样试试看----------------------------------子函数里面读文件肯定是没问题的建议如果语法不熟的话就不要这样玩二维指针,容易出错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行