Извините, pimmling!Вот правильный подход.Я только что очистил основную функцию:
int main(int argc, char *argv[])
{
int i = 0;
char buff [] ="aGVsbG8K\n\0" ;
char* ptr ;
for(i =0;i < 4; i++){
printf("strlen buff = %d\n", strlen(buff));
ptr = dgstdecode(buff, strlen(buff));
printf("ptr = %s\n", ptr);
printf("\n");
}
return 0;
}
Мой вывод теперь (все еще делает это, удаляя / n вещь):
strlen buff = 9 внутри dgstdecode
pReadBuffer = aGVsbG8K
readbytes: 6 внутри dgstdecode msg = привет
ptr = привет
strlen buff = 9 внутри dgstdecode
pReadBuffer = aGVsbG8K
readbytes: 6 внутри dgstdecode msg = привет
ptr = привет
strlen buff = 9 внутри dgstdecode
pRead * Buffer = aGVs26
readbytes: 6 внутри dgstdecode msg = привет
ptr = hello
strlen buff = 9 внутри dgstdecode
pReadBuffer = aGVsbG8K
readbytes: 6внутри dgstdecode msg = hello
ptr = hello
Не обращайте внимания на мой первоначальный ответ ниже:
Кажется, виновной является строка bio = BIO_push(b64, bio);
.Кажется, это перезаписывает ссылку.Вот мой вывод, как только я прокомментировал эту строку (редактор, кажется, отбрасывает некоторые / n):
strlen buff = 8
inside dgstdecode
pReadBuffer = aGVsbG8K
readbytes: 9
inside dgstdecode
msg = aGVsbG8K
ptr = aGVsbG8K
strlen buff = 8
inside dgstdecode
pReadBuffer = aGVsbG8K
readbytes: 9
inside dgstdecode
msg = aGVsbG8K
ptr = aGVsbG8K
strlen buff = 8
inside dgstdecode
pReadBuffer = aGVsbG8K
readbytes: 9
inside dgstdecode
msg = aGVsbG8K
ptr = aGVsbG8K
strlen buff = 8
inside dgstdecode
pReadBuffer = aGVsbG8K
readbytes: 9
inside dgstdecode
msg = aGVsbG8K
ptr = aGVsbG8K