Как объединить два символьных буфера в C
Я пытаюсь объединить два символьных буфера в C, но в конце теряю байты. Мой текущий код выглядит следующим образом:
Мой вывод выглядит следующим образом:
первый блок захвачен как [4ohizB}/ 6,7:}0,H@FbACm.bL~%=a>x!<v|qrv6pfhgsrvmzv}z;z+nfy47toxdoe;c@% ejpcb="ukbwE9d+nBs.+a4qt^cSWK!D+N@=<Hkv7tLPX1L]|1!HawzKEc-$gQeq4tp6bz<]JSbF_j9/-43e9eRRH+Zk3cpLr4|ZD^^L.&JT$l4nD6">rmlzG%l_H6)qWq[S**puDt2l CmRkr7F^B:!Z5oEXy_{~vV-7N8E-6SA&rCT 1(DbeQhTzJw,8Cp,]@N_T,%}LH7[rDg#)xhc@^ekYI-zsq|m4HFvbq0wJZ8^z{w+B|{bSh3~ugc%:QFt4VP0bV8O8dyQ=EB1=6MvJ;_Hbqr;IJ&7[oMhYS;xYpF>Vh%74&.lOr^!##I@Mg/:AtfJ@VW0Mgo}YLSfBJk+4p6<rw2rgy!x{juin!vkzf8&>CUzGQp;vaFPu[~fos@>@hDJ5-^meWpu/8fVpctX{3Nqn[, |c]T3rN-)kpJkYG.gze[C@|kQRL]
второй блок захвачен как [bOv>AHp=|<_;c]73Dud+(1o#FJr~ZB1;2NgI;]}oAcIoqK(;8Pd,0.r6CUQ7xp~+nEELqkZ|9-$vkZ%~k#2N&2LWnA~GZdH][$-:3vytS88Opd8==JG&Db29IqEB8EOpyPJIt?L-e1Vk1|A=kN)+jLAytyekc$ C[|-rP$F8gr}4.&enyg0{@lkG8&~FY|16c(FT)52j|teYT3-og4G?N{JX?tP6|@|oZlGD9LvAH=kA=9d8>vS?9/yzy(tLZYf]9>QA/E|^k,Q#iYE_SIY7&vz^(-h_phap.$Lad1j[fi2<qqr$a[0hb9f&li&5xtm$l-s$9?fsdn$uqea~!gs>a/3@4#bCP5zU]1Hlr.GT9].)|]9[ht2U{NJ1y0,FTteR*Кувмфмх ?YwEgOOP073oE)TCRq;>d;#gJ:ju)eoz-ZB[TFHN8;&/B|CAIkTsj4twx:A?S,OIeMt6R$ZE*z7STP8X{6-[@{!6P=&En+|t5Ww ^Zfq~b&tlk_N]]
combined block with the second block added [4ohizB}/ 6,7:}0,H@FbACm.bL~%=a>x!<v|qrv6pfhgsrvmzv}z;z+nfy47toxdoe;c@% ejpcb="ukbwE9d+nBs.+a4qt^cSWK!D+N@=<Hkv7tLPX1L]|1!HawzKEc-$gQeq4tp6bz<]JSbF_j9/-43e9eRRH+Zk3cpLr4|ZD^^L.&JT$l4nD6">rmlzG%l_H6)qWq[S**puDt2l CmRkr7F^B:!Z5oEXy_{~vV-7N8E-6SA&rCT 1(DbeQhTzJw,8Cp,]@N_T,%}LH7[rDg#)xhc@^ekYI-zsq|m4HFvbq0wJZ8^z{w+B|{bSh3~ugc%:QFt4VP0bV8O8dyQ=EB1=6MvJ;_Hbqr;IJ&7[oMhYS;xYpF>Vh%74&.lOr^!##I@Mg/:AtfJ@VW0Mgo}YLSfBJk+4p6<rw2rgy!x{juin!vkzf8&>CUzGQp;vaFPu[~fos@>@hDJ5-^meWpu/8fVpctX{3Nqn[, |c]T3rN-)kpJkYG.gze[C@|kQRLbOv>AHp=|<_;c]73Dud+(1o#FJr~ZB1;2NgI;]}oAcIoqK(;8Pd,0.r6CUQ7xp~+nEELqkZ|9-$vkZ%~k#2N&2LWnA~GZdH][$-:3vytS88Opd8==JG&Db29IqEB8EOpyPJIt?L-e1Vk1|A=kN)+jLAytyekc$ C[|-rP$F8gr}4.&enyg0{@lkG8&~FY|16c(FT)52j|teYT3-og4G?N{JX?tP6|@|oZlGD9LvAH=kA=9d8>vS?9/yzy(tLZYf]9>QA/E|^k,Q#iYE_SIY7&vz^(-h_phap.$Lad1j[fi2<qqr$a[0hb9f&li&5xtm$l-s$9?fsdn$uqea~!gs>a/3@4#bCP5zU]1Hlr.GT9].)|]9[ht2U{NJ1y0,FTteR*QuWmfMH ?YwEgOOP073oE)TCRq;>d;#gJ:ju)eoz-ZB[TFHN8;&/B|CAIkTsj4<twx:a?s,oiemt6r
как вы="" можете="" видеть="" в="" сочетании="" блок="" является="" отсутствует="" объем="" символов="" $Зе*z7stp8x{6-[@{!6=""&ГТ;П=&ампер;Ан - +|t5Ww ^Ботанической сад~б&амп;tlk_N что последние 53 байт второго блока.
Пожалуйста, просмотрите и подтвердите, что я мог бы сделать неправильно, объединив два блока и показав содержимое объединенного блока.
Что я уже пробовал:
//firstblock and secondblock are captured at different times from the passed in character buffer variable named buf firstblock = (char*) malloc(512*sizeof(char)); memcpy(firstblock, buf, 512); secondblock = (char*) malloc(512*sizeof(char)); memcpy(secondblock, buf, 512); //minimum code to test combining: logMessage(LOG_INFO_LEVEL, "first block captured as [%s]", firstblock); logMessage(LOG_INFO_LEVEL, "second block captured as [%s]", secondblock); char *combinedblock; combinedblock = (char*)malloc(sizeof(char)*(1024)); memcpy(combinedblock, firstblock, 512); //logMessage(LOG_INFO_LEVEL, "combined block with just the first part [%s]", combinedblock); memcpy(combinedblock+512, secondblock, 512); logMessage(LOG_INFO_LEVEL, "combined block with the second block added [%s]", combinedblock);
Richard MacCutchan
Что - то странное происходит с вашими данными. Последняя строка блока 2 изменяется в комбинированной части. Является ли код, который Вы нам показали, точным кодом, который вы используете?