2012-01-02 14 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であることを私に言っているが、私はそれを実行しようとすると、それは私にsprintf -lineでEXC_BAD_ACCESSを与えます。

このスニペットの動作を確認するために何ができるのですか?ありがとう。

答えて

2

cStrおよびresultは、(符号なしの)charまたは(符号なし)charバッファへのポインタの配列である必要があります。それは読み取り専用が、CC_MD5が結果を書き込むためresultは、非定数バッファであるべきであるのでcStrは、constとすることができること、例えば

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]); 
} 

注意。

編集:

あなたはsprintfラインでそれに書き込むよう実は、この場合には、cStrは、constのことはできませんが、限り、あなただけCC_MD5でそれを使用すると、それはOKでなければなりません。

+0

この種の作業は、ループ7でエラー「SIGABRT」でクラッシュしました。問題を解決するのは難しいです。ありがたくありがとう:) – Emil

+0

@Emil - これは少なくともコードのこの部分ではなくてはなりません。 – MByD

+0

ここで書いた正確なコードをアプリケーションに貼り付けて、それは6行目でクラッシュします... – Emil

関連する問題