这个是数组越界了还是栈溢出了!



```c

#define _CRT_SECURE_NO_WARNINGS 
#include 
#include 
int main()
{
    char arr[5][100];
    int index = 0;
    for (index = 0;; index++)
    {
        scanf("%s", arr[index]);
        if (arr[index][0] == '0')
            break;
    }
    for (int i = 0; i < 5; i++)
        printf("%s ", arr[i]);
    return 0;
}

img

``

  • 数组越界 导致的堆栈异常
  • 你那 字符数组一维长度 5,你输入 6个,导致数组越界了
  • 改成如下:
char ch[6][100];

scanf和printf那里没用二维

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/213596
  • 你也可以参考下这篇文章:云服务器无法连接,常见命令帮你解决!
  • 除此之外, 这篇博客: 这个三子棋,输了就要接受惩罚哦!中的 画出棋盘 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    这是我们期望画出的棋盘

    其中o代表空格

    x代表数组中存放的元素

    在画出这个棋盘时,我们可以将每两行当成一组来循环打印输出

    一行元素

    一行分割线

     

     

    void display_board(char board[ROW][COL], int row, int col)
    {
    	for (int i = 0; i < row; i++)
    	{
    		for (int j = 0; j < col; j++)
    		{
    			printf(" %c ", board[i][j]);//打印数组中已经存放的元素,包含空格
    			if (j != col - 1)
    			{
    				printf("|");//在分隔处打印分割线,最后一个不需要打印
    			}
    		}
    		printf("\n");
    		if (i != row - 1)//在最后一行不需要打印分割线
    		{
    			for (int j = 0; j < col; j++)//打印分隔线
    			{
    				printf("---");
    				if (j != col-1)
    				{
    					printf("|");
    				}
    			}
    			printf("\n");
    		}
    
    	}
    }

     这是打印出的棋盘


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^