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