我是C编程的新手,我试着用几个小时修复“未定义的引用”错误。
我需要对Battleship游戏进行编码,现在我只是试图在屏幕上打印游戏地图,我的代码可能不会让你感觉到,但我只是在开始时尝试修复此错误。
我的代码
#include <stdio.h>
/*functions declaration*/
void mapmaker(char map[8][8]);
void printmap(char map[8][8]);
int main()
{
char map[8][8];
mapmaker(map);
printmap(map);
}
void mapmaker(char map[8][8])
{
int i,z;
/*creating map*/
for(i=0;i<8;i++){
for(z=0;z<8;z++)
{
map[i][z]='~';
}
}
void printmap(char map[8][8])
{
int num[8]={0,1,2,3,4,5,6,7};
int i,z;
for(i=0;i<8;i++)
printf("%d",num[i]);
printf("\n--------------------------------\n");
for(i=0;i<8;i++)
printf("%d|",num[i]);
for(z=0;z<8;z++)
printf("%c ",map[i][z]);
printf("\n");
}
}
当它试图运行该函数时发生错误 - &gt; “printmap(地图)” 然后我得到“未定义的引用”printmap(map)“”错误。
非常感谢!
答案 0 :(得分:1)
您没有正确关闭功能printmap的支架,最后添加一个支架。而且在mapmaker中你没有放置mapmaker函数的结束括号。 这将解决您的问题。
#include <stdio.h>
/*functions declaration*/
void mapmaker(char map[8][8]);
void printmap(char map[8][8]);
int main()
{
char map[8][8];
mapmaker(map);
printmap(map);
return 0;
}
void mapmaker(char map[8][8])
{
int i,z;
/*creating map*/
for(i=0;i<8;i++){
for(z=0;z<8;z++)
{
map[i][z]='~';
}
}
} //this was missing
void printmap(char map[8][8])
{
int num[8]={0,1,2,3,4,5,6,7};
int i,z;
for(i=0;i<8;i++)
printf("%d",num[i]);
printf("\n--------------------------------\n");
for(i=0;i<8;i++)
printf("%d|",num[i]);
for(z=0;z<8;z++)
printf("%c ",map[i][z]); //in for loop
printf("\n"); //not in for loop
}
// } //this was extra
答案 1 :(得分:-3)
map[i][z]
未初始化printmap(char map[8][8])
而是发送参考。