无法得知分割错误的原因

时间:2019-03-18 15:02:21

标签: c

我想制作一个tictactoe游戏程序。尚未完成,但可能有些问题我无法弄清。

#include <stdio.h>
#include <string.h>

play(){
    char input[3][3],player1[100],player2[100];
    int i,j,k,times;
    for (j=0;j<3;j++){
        for (k=0;k<3;k++){
            input[j][k]='_';
        }
    }
    printf ("How many times do you want to play?\n");
    scanf ("%d",&times);
    printf ("Enter the name of first player : \n");
    scanf ("%s",player1);
    printf ("Enter the name of second player : \n");
    scanf ("%s",player2);
    printf ("Who will enter first letter?" "\n\n1. %s" "\n1. %s" "\n\nEnter 1 or 2 : \n",player1,player2);
    scanf ("%d",&i);
    for (j=0;j<times;j++){
        for (k=0;k<9;k++){
            if (i==1){
                if (k==0 || k%2==0){
                    printf("This is %s's chance.",player1);
                }
                if (k==1 || k%2==1){
                    printf("This is %s's chance.",player2);
                }
            }
            if (i==2){
                if (k==0 || k%2==0){
                    printf("This is %s's chance.",player2);
                }
                if (k==1 || k%2==1){
                    printf("This is %s's chance.",player1);
                }
            }
            printf ("%s   %s   %s\n\n%s   %s   %s\n\n%s   %s   %s\n\n",input[0][0],input[0][1],input[0][2],input[1][0],input[1][1],input[1][2],input[2][0],input[2][1],input[2][2]);
        }
    }
}

int main(){
    int i;
    printf("Welcome to TicTacToe made by Saurabh.\n\n1. Play\n2. Help\n\nEnter 1 or 2 : ");
    scanf("%d",&i);
    switch (i){
        case 1:
            play();
            break;
        case 2:

            break;
        default:
            printf ("Invalid response from user.");
    }
}

scanf("%d",&i)函数中运行play后,它表示分段错误,但我不知道为什么会这样。预先感谢。

1 个答案:

答案 0 :(得分:1)

我已经看到一些印刷品,这一行存在一些问题:

printf ("%s   %s   %s\n\n%s   %s   %s\n\n%s   %s   %s\n\n",input[0][0],input[0][1],input[0][2],input[1][0],input[1][1],input[1][2],input[2][0],input[2][1],input[2][2]);

您定义了char input[3][3],因此input[0][0]是单个字符(其他索引也具有不同的字符),就像我定义char my_str[10];一样,my_str[0]是单个字符。

我不知道这是否是您想要的,但更改为:

printf ("%c   %c   %c\n\n%c   %c   %c\n\n%c   %c   %c\n\n",input[0][0],input[0][1],input[0][2],input[1][0],input[1][1],input[1][2],input[2][0],input[2][1],input[2][2]);

不应生成错误。