From e526cd8f5bab7b791065569f94c7498473e53f9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=B7=E5=BB=BA=E4=BC=9F?= Date: Tue, 29 Oct 2019 13:32:28 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8DLString=E4=B8=ADStrIn?= =?UTF-8?q?sert()=E5=87=BD=E6=95=B0=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移动元素后,失去元素的部分需要用'\0'填充 --- CLion/CourseBook/0403_LString/LString.c | 1 + Dev-C++/CourseBook/0403_LString/LString.cpp | 49 ++++++++++---------- VisualC++/CourseBook/0403_LString/LString.c | 1 + VisualC++/CourseBook/CourseBook.sdf | Bin 3493888 -> 3493888 bytes VisualC++/CourseBook/CourseBook.suo | Bin 86528 -> 86528 bytes 5 files changed, 27 insertions(+), 24 deletions(-) diff --git a/CLion/CourseBook/0403_LString/LString.c b/CLion/CourseBook/0403_LString/LString.c index 0351aee..91aa9bc 100644 --- a/CLion/CourseBook/0403_LString/LString.c +++ b/CLion/CourseBook/0403_LString/LString.c @@ -359,6 +359,7 @@ Status StrInsert(LString* S, int pos, LString T) { // 移动目标块中pos位置之前的元素 for(i = 1; i <= (pos - 1) % CHUNKSIZE; i++) { h->ch[j++] = p->ch[i - 1]; + p->ch[i - 1] = '\0'; } } diff --git a/Dev-C++/CourseBook/0403_LString/LString.cpp b/Dev-C++/CourseBook/0403_LString/LString.cpp index ab9c5dd..a8f895a 100644 --- a/Dev-C++/CourseBook/0403_LString/LString.cpp +++ b/Dev-C++/CourseBook/0403_LString/LString.cpp @@ -292,19 +292,19 @@ Status StrInsert(LString* S, int pos, LString T) { Chunk* r; Chunk* s; int i, j, count; - + if(pos < 1 || pos > (*S).curlen + 1) { return ERROR; } - + // ĴΪգǰ if(StrEmpty(T)) { return OK; } - + // ¼ʼֹ h = t = NULL; - + // TеĿ飨ֻƽṹ for(r = T.head; r != NULL; r = r->next) { s = (Chunk*) malloc(sizeof(Chunk)); @@ -312,7 +312,7 @@ Status StrInsert(LString* S, int pos, LString T) { exit(OVERFLOW); } s->next = NULL; - + if(r == T.head) { h = t = s; } else { @@ -320,7 +320,7 @@ Status StrInsert(LString* S, int pos, LString T) { t = s; } } - + // SеposԪڵĿ飨עΪĿ飩ָpreָǰ if(pos >= 1 && pos <= CHUNKSIZE) { pre = NULL; // ˵posԪڿΪhead @@ -331,11 +331,11 @@ Status StrInsert(LString* S, int pos, LString T) { } p = pre->next; } - + /* * htΧĿ뵽posڵĿ֮ǰ */ - + if(pre == NULL) { t->next = (*S).head; (*S).head = h; @@ -343,69 +343,70 @@ Status StrInsert(LString* S, int pos, LString T) { pre->next = h; t->next = p; } - + if(pre == (*S).tail) { (*S).tail = t; } - + /* * ƶ/Ԫ */ - + j = 0; - + // 뵽ijġм䡱 if((pos - 1) % CHUNKSIZE != 0) { // ƶĿposλ֮ǰԪ for(i = 1; i <= (pos - 1) % CHUNKSIZE; i++) { h->ch[j++] = p->ch[i - 1]; + p->ch[i - 1] = '\0'; } } - + r = T.head; i = 0; - + // TеԪصS for(count = 1; count <= T.curlen; count++) { h->ch[j] = r->ch[i]; - + j = (j + 1) % CHUNKSIZE; i = (i + 1) % CHUNKSIZE; - + if(j == 0) { h = h->next; } - + if(i == 0) { r = r->next; } } - + // Tһа'\0' if(T.curlen % CHUNKSIZE != 0) { r = p; // ָĿ i = (pos - 1) % CHUNKSIZE; - + // ƶĿposλü֮Ԫ for(count = pos; count <= (*S).curlen; count++) { h->ch[j] = r->ch[i]; r->ch[i] = '\0'; - + j = (j + 1) % CHUNKSIZE; i = (i + 1) % CHUNKSIZE; - + if(j == 0) { h = h->next; } - + if(i == 0) { r = r->next; } } } - + (*S).curlen += T.curlen; - + return OK; } diff --git a/VisualC++/CourseBook/0403_LString/LString.c b/VisualC++/CourseBook/0403_LString/LString.c index ab9c5dd..8c3a412 100644 --- a/VisualC++/CourseBook/0403_LString/LString.c +++ b/VisualC++/CourseBook/0403_LString/LString.c @@ -359,6 +359,7 @@ Status StrInsert(LString* S, int pos, LString T) { // ƶĿposλ֮ǰԪ for(i = 1; i <= (pos - 1) % CHUNKSIZE; i++) { h->ch[j++] = p->ch[i - 1]; + p->ch[i - 1] = '\0'; } } diff --git a/VisualC++/CourseBook/CourseBook.sdf b/VisualC++/CourseBook/CourseBook.sdf index 1cc8ec8239b703a07e4eb87f5200ab35a1bed523..d8a2bcd5e4bc9927a84f906281d5dcac5a4c647a 100644 GIT binary patch delta 1363 zcmbu8e`s4(6vyv+cgpWB@Us5N4F`IrnZEWOkvV6S&2IcAEU#Sq>bKE`B1`yEiK#&F;LcOk z`1AsgXrD_{Tf_r&en3S1l|fNxlKYNT-#c}9fyZgKqa{o4Y!RF2sbLZE-`*;=a~b$N z@V=2->7IUZQ(kwsh|t)G_+TcJk)Kueyl^^DWN-L#u46eYU%dFo?_V|++5NtJt#LU# zQv!KcY2SBObn1dH&!m^b2g_LIm9nGc4rd=Nilf3QGXL3zE-rY0 zCY!qQ&II#MG>LJyGUpVVx3wN;oB?}`QR!;1&7ZHvRmi{o3O~({%(?RNjqeYc-jn~U zchbGDm%}G_>~Gg|lLVc5GUXvX8QuEX|DK85{KI`8ngQ(81IX)v3_LzzyT4fLzETur z`NWB_;YICv$d{mUP5hYeCDchCo8e4%mvHopVkQPnn*J%jm2ydyiJDZ(3b#o7Q?HYj zn!OZFuUfjTWv!)->0DBc+0vd(^;nviF8!SEr|}M5I;+p*Y_n#7nK;Cbqdz=PfpUFH{E3I z89#3E;`FNa#tvyOXY-maGjULpc&j%=f3C{yR;bgALeax()J$bwfIPZw$F(K>`MgXr zqlS{ENVok*&axIi!+L4|^CCf|pckOOTJ`aVGx|*%x3a#1rH=i%j4Folx{#M1bk8_? zBSUs0d;h(WeRd-wN|?uAah3{<2{z1@{76x4cav9jX>+ageW5!9wzqc6cKPS3@sawP zA_Nc`5t z6o}*R`&huh_Jv zdLhc$E_PLLFyNKOHH4!92#2#WV5hiMg2vJMa u5%olrh!OjU1|m*05>3Q@;sB8#nu&u%k~l=P5UoUtI83w=?Li_0JexIq6HGXgfePjU@#YDQAA%TXO?TvHtlxCCL1MZCAES(*+xwV{zCM*p zEi-f+CC~PoF;5H>p2ot+viZo{dilwRSqvGIrkC85v#vVZc17lTg delta 229 zcmZoz!rHKebwdsd+k!BjEz5g17qMJoW2s?aV3>R$T4!?!_b>U0F&rG348;tk42cYz z>$HC9d&g1S12(Ng)2WS=Be$gyTOHY@X2gA!t%a!=|eZ5|bN34s3RK$1Kmu z2$HP=8yly=czk*(FJmxE5tP6E3ooNTGek`tOsqtZ@jUC~!z_l|OT-z^i-1_uOLQ3h qIT_1