簡體   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