2012-01-02 175 views
-3

我发现这个代码片段here,但我只是不知道变量cSrtresult是什么!识别C变量

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_ACCESSsprintf直插式。

你知道我能做些什么来使这个片段工作吗?谢谢。

回答

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

+0

这种工作,它在循环7崩溃与'SIGABRT'错误。很难排除故障..感谢虽然:) – Emil 2012-01-02 20:03:18

+0

@Emil - 这不应该崩溃,至少不是代码的这部分。 – MByD 2012-01-02 20:07:26

+0

但是,我确实将你在这里写的代码粘贴到我的应用程序中,并且它在第6行崩溃了...... – Emil 2012-01-02 20:11:21