识别C变量

时间:2012-01-02 19:45:50

标签: iphone objective-c c

我找到了此代码段here,但我无法弄清楚变量cSrtresult是什么!

for(int i = 0; i<1000000; i++){
    CC_MD5(cStr, strlen(cStr), result);
    sprintf(cStr, "%02x%02x", result[0], result[1]);
}

编译器告诉我它们是charunsigned char,但是当我尝试运行它时,它会在EXC_BAD_ACCESS行给我一个sprintf

您是否知道我可以做些什么来使这个代码段工作?感谢。

1 个答案:

答案 0 :(得分:2)

cStrresult应该是(无符号)字符的数组,或指向(无符号)字符缓冲区的指针。

例如

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中使用它就应该没问题