ownpy

ownpy

1个粉丝

34

问答

0

专栏

1

资料

ownpy  发布于  2020-05-08 14:43:25
采纳率 0%
34个问答
1698

为什么对结构其中一个成员幅值 会影响到另一个成员咧?

 


输入结果是



我来回答
回答5个
时间排序
认可量排序

jugg

4个粉丝

18

问答

0

专栏

2

资料

jugg 2020-05-08 15:45:33
认可0
你的type长度是8  但是UP_TYPE实际编译的时候会自动加上'\0' 所以长度应该是9 因此type存不了 会自动找下一个整块的能存的位置来存这9个字符 所以自动存到version 你把type放在check_code后面 应该就知道了 不知道我这样理解的对不对

DBFace

0个粉丝

4

问答

0

专栏

0

资料

DBFace 2020-05-08 16:38:50
认可0
看到楼主在群里的讨论了,很激烈,哈哈哈哈

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2020-05-08 16:41:46
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157958&ptid=80133]DBFace 发表于 2020-5-8 16:38[/url]
看到楼主在群里的讨论了,很激烈,哈哈哈哈[/quote]

对字符串一知半解的典型体现 ;P

jugg

4个粉丝

18

问答

0

专栏

2

资料

jugg 2020-05-08 19:03:24
认可0
我说错了 应该是'\0'的问题。 存到type里面的没有'\0'   '\0‘存到了version里面 但是在存version的时候 又把这个'\0' 覆盖了 所以在打印的时候没有遇到结束符 把version里面的内容也打印出来了。。。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2020-05-09 09:51:32
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157962&ptid=80133]jugg_kai 发表于 2020-5-8 19:03[/url]
我说错了 应该是'\0'的问题。 存到type里面的没有'\0'   '\0‘存到了version里面 但是在存version的时候 又 ...[/quote]


来仔细看看代码

memset(&uhead, 0, sizeof(update_head_t));
这个很清楚,结构里面全添0

memcpy(uhead.type, UP_TYPE, 8);
这个也很清楚,copy 8个字节
等一下,但是结果是什么? 结果是uhead.type[0] ~ uhead.type[7] 等于'S'~'2'

printf("1111 type: %s\r\n", uhead.type);
单就这句来说也没有问题, 但是放到楼主的代码中就不知道要干吗了
打印字符串? 好像也不对,楼主好像并没有把type当做字符串来处理,type全填了字符,没有给type填上结束符'\0'
能打印出来STLINKV2 是因为memset(&uhead, 0, sizeof(update_head_t))
uhead.type[8]正好是0, 也就是字符'\0', 是楼主期望的动作还是仅仅是个巧合?
如果memset的不是0,结果就好玩了

memcpy(uhead.version, "v1.1.5", 16);
这个很清楚,问题是结果是什么? uhead.version[0]~[6]等于 'v', '1', '.', '1', '.','5', '\0'

printf("2222 type: %s\r\n", uhead.type);
打印type,问题来了经过上面的memcpy后,内存里面发生了什么变化?
type[8]其实就是version[0],所以type这个字符串原来的结束符被覆盖掉了,type作为字符串来说变成“STLINKV2v1.1.5”了

就有了楼主的打印
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区