コードの問題:
2次元配列の宣言が間違っています。最初の括弧には行数を、2 番目の括弧には列数を含める必要があります。(コード内で逆に持っています)
board[ rows ][ columns * 2 ] = '|';
.. ループ カウンターを 2 ずつインクリメントする方がはるかに簡単です (私のコードを参照してください) 。
%c
文字を印刷するには、記述子ではなく選択します%d
最後に、大きな問題ではありませんが、メインでリターンを行うことをお勧めします
コードに別の大きな問題があり、申し訳ありません。drawBoard 関数をchar
.. として宣言しますが、そこから何も返されませんchar
.. ( -Wall フラグがオンの場合、コンパイラは文句を言います) ..void
代わりに変更します
修正されたコードは次のとおりです (コードの問題を理解するには、コード内のコメントを参照してください) 。
また、現在、配列に「X」を入力しています..ニーズに合わせて変更できます
#include <stdio.h>
void drawBoard()
{
char board[3][7], XO; // you were declaring your array wrong .. it rows in first bracket and columns in 2nd bracket
int rows, columns;
for ( rows = 0 ; rows < 3 ; rows++ ){
for ( columns = 0 ; columns < 7 ; columns=columns+2 ){ // to fill every second elemnt of the array .. just increment the counter by 2
board[ rows ][ columns ] = '|';
}
}
for ( rows = 0 ; rows < 3 ; rows++ ){
for ( columns = 1 ; columns < 7 ; columns = columns+2 ){
board[ rows ][ columns ] = 'X';
}
}
for ( rows = 0 ; rows < 3 ; rows++ )
{
for ( columns = 0 ; columns < 7 ; columns++ )
{
printf( "%c", board[rows][columns] ); // its supposed to be %c as you are printing a character
}
printf("\n");
}
}/* end function drawboard */
int main()
{
drawBoard();
return 0;
}
出力;
Sukhvir@Sukhvir-PC ~
$ gcc -Werror -g -o test test.c
Sukhvir@Sukhvir-PC ~
$ ./test
|X|X|X|
|X|X|X|
|X|X|X|
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------
ゲームの私の解釈: (マキシムからの提案に従ってわずかに編集されています)
#include <stdio.h>
void drawBoard(char board[][3])
{
int rows, columns;
for ( rows = 0 ; rows < 3 ; rows++ )
{
for ( columns = 0 ; columns < 3 ; columns++ )
{
if(board[rows][columns]){
printf( "|%c", board[rows][columns] );
}else{
printf("| ");
}
}
printf("|\n");
}
}/* end function drawboard */
int main()
{
char game[3][3]={{0}};
int totalEntry =0,row,column;
char value;
while(totalEntry<=9){
printf("Enter (x) or (o): ");
scanf("%c",&value);
getchar();
printf("Enter row number: ");
scanf("%d",&row);
getchar();
printf("Enter Column number: ");
scanf("%d",&column);
getchar();
game[row][column] = value;
drawBoard(game);
}
return 0;
}
出力: (短くするために止めました..しかし、あなたはアイデアを得る)
$ ./test
Enter (X) or (O): x
Enter row number: 0
Enter Column number: 0
|x| | |
| | | |
| | | |
Enter (X) or (O): o
Enter row number: 1
Enter Column number: 1
|x| | |
| |o| |
| | | |
Enter (X) or (O): x
Enter row number: 2
Enter Column number: 2
|x| | |
| |o| |
| | |x|
Enter (X) or (O):
[4]+ Stopped