2012-01-02 114 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