【发布时间】:2013-10-18 02:25:35
【问题描述】:
我有以下代码可以正常工作:
//function1 for decoding base64
int base64_decode (const char *base64, char *to) { /*function*/ }
//code which is working
buf_struct tmpbuf;//structure
base64_decode(buffer, (char *)&tmpbuf);
我想将其转换为:
//function2 for decoding base64
char *unbase64(unsigned char *input, int length) { /*function*/ }
//code needs to be modified
buf_struct tmpbuf;//structure
char *unbase = unbase64(buffer, strlen(buffer));
unbase = (char *)&tmpbuf;
但第二个不起作用。
*如何将“char *”转换为“(char )&”?
编辑:
char *unbase;
unbase = malloc(strlen(buffer) + 1);
memset(unbase, 0, strlen(buffer) + 1);
//unbase = unbase64(buffer, strlen(buffer));
base64_decode(buffer, unbase);
fprintf(stderr,"unbase: %s\n",unbase);
strcpy((char *)&tmpbuf, unbase);
【问题讨论】:
-
在第二种情况下,您对
tmpbuf.?的期望是什么?你想在函数unbase64中做什么?unbase是由unbase64的返回分配的,那么您在下一行再次分配什么? -
我想你想反过来做:
tmpbuf->.. = unbase;。在第一个示例中,您可能不应该将tmpbuf转换为char *,而是使用struct的成员,它的定义是什么?