[英]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.