[英]passing an array as an argument C
I was wondering if you could tell me what I am doing wrong. 我想知道你能否告诉我我做错了什么。 Here is a small fragment of a battleship game I'm working on, it's supposed to show two clear arrays filled with the "=" symbol, but all I'm getting is a mess.
这是我正在研究的一艘战舰游戏的一小部分,应该显示两个清晰的数组,其中填充了“ =”符号,但我得到的只是一团糟。
#include <stdio.h>
int p_ship_count;
int e_ship_count;
#define EMPTY 0
#define BORDER 2
#define SHIP 1
#define HIT 4
#define MISS 3
#define SHOW 5
void print_boards(char *message,int e_board[][12],int p_board[][12])
{
int i;
int v,q;
printf("\t A B C D E F G H I J\n");
for(i=0,v=10,q=0;i<100;++i)
{
if(v==10)
{
if(q<9) printf("\n\t %i ", ++q);
else printf("\n\t%i ", ++q);
v=0;
}
++v;
if(e_board[v][q] == EMPTY) printf("= ");
if(e_board[v][q] == SHIP) printf("O ");
if(e_board[v][q] == BORDER) printf("+ ");
if(e_board[v][q] == MISS) printf("+ ");
if(e_board[v][q] == HIT) printf("@ ");
}
printf("\n\n\tenemy %i\n\t------------------------\n\tplayer %i\n\n\t A B C D E F G H I J\n",e_ship_count,p_ship_count);
for(i=0,v=10,q=0;i<100;++i)
{
if(v==10)
{
if(q<9) printf("\n\t %i ", ++q);
else printf("\n\t%i ", ++q);
v=0;
}
++v;
if(p_board[v][q] == EMPTY) printf("= ");
if(p_board[v][q] == SHIP) printf("O ");
if(p_board[v][q] == BORDER) printf("+ ");
if(p_board[v][q] == MISS) printf("+ ");
if(p_board[v][q] == HIT) printf("@ ");
if(p_board[v][q] == SHOW) printf("X ");
}
printf("\n\n\t");
for(i=0;message[i]!='\0';++i)
{
printf("%c",message[i]);
}
printf("\n\n");
}
int main()
{
int e_board[12][12];
int p_board[12][12];
print_boards("",e_board,p_board);
return 0;
}
Initialize everything to zero in the beginning. 首先将所有内容初始化为零。 I think you can also allocate the array with some C-function like
calloc
or something that does the initialization to 0
for you, but I forgot at the moment. 我认为您也可以为数组分配一些C函数,例如
calloc
或为您执行初始化为0
的操作,但此刻我忘记了。
int main()
{
int i=0; int j=0;
int e_board[12][12];
int p_board[12][12];
for(i=0; i < 12; i++){
for(j=0; j < 12; j++){
e_board[i][j] = 0;
p_board[i][j] = 0;
}
}
print_boards("",e_board,p_board);
return 0;
}
Having this as main function, the programm prints out properly all "=" 以此为主要功能,程序可以正确打印所有“ =”
A B C D E F G H I J
1 = = = = = = = = = =
2 = = = = = = = = = =
3 = = = = = = = = = =
4 = = = = = = = = = =
5 = = = = = = = = = =
6 = = = = = = = = = =
7 = = = = = = = = = =
8 = = = = = = = = = =
9 = = = = = = = = = =
10 = = = = = = = = = =
enemy 0
------------------------
player 0
A B C D E F G H I J
1 = = = = = = = = = =
2 = = = = = = = = = =
3 = = = = = = = = = =
4 = = = = = = = = = =
5 = = = = = = = = = =
6 = = = = = = = = = =
7 = = = = = = = = = =
8 = = = = = = = = = =
9 = = = = = = = = = =
10 = = = = = = = = = =
If you didn't initialize the arrays properly, you'd get random data trash and it would print something like 如果您未正确初始化数组,则会得到随机数据垃圾,它会打印类似
A B C D E F G H I J
1
2
3 +
4 = = =
5 =
6 =
7
8 @
9 @ =
10 @ = =
enemy 0
------------------------
player 0
A B C D E F G H I J
1 = =
2 = = O =
3 = = =
4 = =
5 = = = =
6 = = = =
7 = = = =
8 = =
9 = = + = =
10 = = = = =
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.