鱼C论坛

 找回密码
 立即注册
查看: 1402|回复: 7

[已解决]关于二维字符型数组的报错提示

[复制链接]
发表于 2023-11-8 16:30:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我定义了一个二维字符型数组(如下图),程序可以正常运行,但是有小问题的报错(如下图)(猜测是书写不规范而导致的),但不知道如何更改
最佳答案
2023-11-9 10:57:20
问题就是:

2023-11-09_10-56-07.png

由于字符数组 board_now 的元素被初始化为整数而不是字符。

在 C 语言中,字符使用单引号括起来表示,而不是使用双引号。

正确的初始化代码应该是这样的:
char board_now[3][3] = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};
将所有的 '.' 改为单引号包围的空格字符 ' '。

这样就可以正确地将字符数组初始化为空格字符了。
屏幕截图 2023-11-08 162255.png
屏幕截图 2023-11-08 162850.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-8 16:30:46 | 显示全部楼层
根据您提供的信息,我无法看到图像,但我可以尝试解答您的问题。

当涉及到二维字符型数组时,报错可能是由于以下几个原因导致的:

1. 数组越界:您可能尝试访问数组中不存在的索引位置。请确保您的索引值在合法范围内,即在数组的行和列的有效范围内。

2. 内存分配问题:如果您在声明数组时没有正确分配内存,或者在使用数组之前没有初始化数组的元素,那么可能会导致报错。请确保在使用数组之前,先分配足够的内存,并初始化每个元素。

3. 字符串末尾的空字符:在C语言中,字符串是以空字符 '\0' 结尾的。如果您在赋值字符串时忘记添加空字符,可能会导致报错。请确保在字符串的末尾添加空字符。

4. 数组名作为指针传递:在C语言中,数组名会被解释为指向数组首元素的指针。如果您将数组名作为参数传递给函数,并且在函数内部对数组进行修改,可能会导致报错。请确保在函数内部使用指针来操作数组。

如果您能提供更多的代码和报错信息,我将能够更准确地帮助您解决问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-8 16:41:51 | 显示全部楼层
本帖最后由 xiaotubie 于 2023-11-8 16:44 编辑

你这每个元素是不是多输了一个字符啊,这个 '  .' 点号前面好像还一个空格字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-11-8 16:46:20 | 显示全部楼层
isdkz 发表于 2023-11-8 16:30
根据您提供的信息,我无法看到图像,但我可以尝试解答您的问题。

当涉及到二维字符型数组时,报错可能是 ...

代码:char board_now[3][3] = {{' .',' .',' .'},{' .',' .',' .'},{' .',' .',' .'}};
报错信息:overflow in conversion from 'int' to 'char' changes value from '8238' to '46' [-Woverflow]gcc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-8 16:47:01 | 显示全部楼层
xiaotubie 发表于 2023-11-8 16:41
你这每个元素是不是多输了一个字符啊,这个 '  .' 点号前面好像还一个空格字符

空格是包含在元素之内的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-8 17:17:51 | 显示全部楼层
本帖最后由 xiaotubie 于 2023-11-8 17:46 编辑

Eat.随 发表于 2023-11-8 16:47
空格是包含在元素之内的


关键这样是错误的啊,单引号包含了2个字符了啊,而规定单引号里面只能有一个字符,你还是先去学习一下基础语法吧。
你那个错误的提示:8238的十六进制是202E,ASCII编码的20表示空字符,2E表示.号,因为你将2个字符错误的写在了单引号里面,所以错误的组合成了202E,出来了一个奇怪的8238
而46的十六进制是2E, ASCII编码的2E是.号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-8 18:40:13 | 显示全部楼层
xiaotubie 发表于 2023-11-8 17:17
关键这样是错误的啊,单引号包含了2个字符了啊,而规定单引号里面只能有一个字符,你还是先去学习一下 ...

好的,我已经将那个空格删了,我会继续学习的。(还是个菜鸟)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-9 10:57:20 | 显示全部楼层    本楼为最佳答案   
问题就是:

2023-11-09_10-56-07.png

由于字符数组 board_now 的元素被初始化为整数而不是字符。

在 C 语言中,字符使用单引号括起来表示,而不是使用双引号。

正确的初始化代码应该是这样的:
char board_now[3][3] = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};
将所有的 '.' 改为单引号包围的空格字符 ' '。

这样就可以正确地将字符数组初始化为空格字符了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 22:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表