繁体   English   中英

C结构的strcpy问题

[英]strcpy issue with structure in C

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

typedef struct {
    char Code[4];
    char Name[2];
}Course;

int main() {
    char str[7] = "This is";
    char a[4], b[2];
    Course course;
    sscanf(str, "%s %s", a, b);
    strcpy(course.Code, a);
    printf( "%s\n", course.Code );
    strcpy(course.Name, b);
    printf( "%s\n", course.Code );
   return(0);
}

您需要五个字符来存储“ 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上没有终止零, course.Code printf将继续打印。 它无法知道您希望它在四个字符后停止。 在“ Thisis”之后您不会得到不可读的垃圾,这在很大程度上取决于运气和/或编译器设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM