The content of course.Code before and after strcpy(course.Name, b) is "This" and "Thisis", which seems like strcpy() is also concatenating the content of b to 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);
}