我找到了此代码段here,但我无法弄清楚变量cSrt
和result
是什么!
for(int i = 0; i<1000000; i++){
CC_MD5(cStr, strlen(cStr), result);
sprintf(cStr, "%02x%02x", result[0], result[1]);
}
编译器告诉我它们是char
和unsigned char
,但是当我尝试运行它时,它会在EXC_BAD_ACCESS
行给我一个sprintf
。
您是否知道我可以做些什么来使这个代码段工作?感谢。
答案 0 :(得分:2)
cStr
和result
应该是(无符号)字符的数组,或指向(无符号)字符缓冲区的指针。
例如
char cStr[] = "This is my str";
char result[16];
for( int i=0; i<1000000; i++ )
{
CC_MD5( cStr, strlen(cStr), result );
sprintf(cStr, "%02x%02x", result[0], result[1]);
}
请注意,cStr
可能是const
,因为它只是被读取,但result
应该是非常量缓冲区,因为CC_MD5
会在那里写入结果。
修改强>
实际上,在这种情况下,cStr
不能是const,因为你在sprintf
行写到它,但只要你在CC_MD5
中使用它就应该没问题