C 无法知道分段错误的原因
我想做一个Tictatcoe游戏程序。它还没有完成,但可能有一些问题我无法解决C 无法知道分段错误的原因,c,C,我想做一个Tictatcoe游戏程序。它还没有完成,但可能有一些问题我无法解决 #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]='
#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",×);
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.");
}
}
#包括
#包括
play(){
字符输入[3][3],播放器1[100],播放器2[100];
int i,j,k,次;
对于(j=0;j,我已经看到一些印刷品,这一行存在一些问题:
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]);
不应生成错误。在第一个循环中,您仅分配input[0][0]
。在“long”printf
中,您还使用%s
说明符打印input[0][0]
。请首先修复所有编译器警告。我肯定您有一些警告。哦,我刚才只是通过放置input[0][0]进行检查
当我出错时。这似乎是一个很好的时机。尤其是如何在调试器中运行程序,以便在崩溃发生时捕获崩溃,并能够在代码中找到崩溃发生的位置。T in代表微小。它很快,但最重要的是很小。这意味着它会有一些折衷,其中一个是它缺少相当大的安全性大型编译器会有很多诊断功能。非常感谢。