C结构的strcpy问题

时间:2018-09-06 19:22:26

标签: c strcpy

strcpy(course.Name,b)之前和之后的course.Code的内容分别是“ This”和“ Thisis”,这似乎strcpy()也将b的内容连接到course.Code

#{

1 个答案:

答案 0 :(得分:3)

您需要五个字符来存储“ This”,而需要三个字符来存储“ is”,因为每个字符串都以零结尾。 (加分点:您需要八个存储“ This is”)

course中的原始内存如下所示:

Code[0] 'T'
Code[1] 'h'
Code[2] 'i'
Code[3] 's'
Name[0] 'i'
Name[1] 's'

由于course.Code上没有结尾零,因此printf将继续打印。它无法知道您希望它在四个字符后停止。在“ Thisis”之后您不会得到无法理解的垃圾,这在很大程度上取决于运气和/或编译器设置。