我是c新手,我知道我做錯了什麼,但真的可以在這裏使用一些幫助。向字符串捕獲值的問題
我正在嘗試採取一個字符串,並得到它的MD5校驗和散列。我有很好的計算MD5的工作代碼(下圖)。他們工作得很好,我對他們沒有任何問題。我的問題是將這個函數的輸出捕獲到一個字符串中。我知道這很簡單,但我不知道我搞砸了:
// MD5 Hash query_string for return checksum
int i;
unsigned char result[MD5_DIGEST_LENGTH];
unsigned char returnCheck;
MD5(query_string, strlen(query_string), result);
// output
for(i = 0; i < MD5_DIGEST_LENGTH; i++)
{
printf("MD return = %02x\n", result[i]);
returnCheck += result[i];
printf("returnCheck = %02x\n",returnCheck);
}
正如你可以看到,我試圖把結果輸出[i]和它連接成一個字符串(returnCheck) 。問題是我沒有得到正確的值到returnCheck。請參見下面的輸出:
MD return = 6b
returnCheck = 6b
MD return = 84
returnCheck = ef
MD return = 12
returnCheck = 01
MD return = a6
returnCheck = a7
MD return = a9
returnCheck = 50
MD return = 96
returnCheck = e6
MD return = 98
returnCheck = 7e
MD return = 52
returnCheck = d0
MD return = 3b
returnCheck = 0b
MD return = d6
returnCheck = e1
MD return = 32
returnCheck = 13
MD return = 77
returnCheck = 8a
MD return = 0c
returnCheck = 96
MD return = b4
returnCheck = 4a
MD return = 3d
returnCheck = 87
MD return = 4f
returnCheck = d6
的MD5我應該在這個例子中得到的是「6b8412a6a99698523bd632770cb43d4f」其中MD回報顯示正確,但不returnCheck。目標是在這個函數的最後有一個名爲'returnCheck'的字符串,值爲'6b8412a6a99698523bd632770cb43d4f'。
請幫忙!
- 我還試圖 -
// MD5 Hash query_string for return checksum
int i;
unsigned char result[MD5_DIGEST_LENGTH];
char returnCheck[32] = "";
MD5(query_string, strlen(query_string), result);
// output
for(i = 0; i < MD5_DIGEST_LENGTH; i++)
{
printf("MD return = %02x\n", result[i]);
returnCheck[i] = result[i];
printf("returnCheck = %x\n",returnCheck);
}
'returnCheck'是一個單獨的字符,而不是一個字符串。 '+ ='操作不是串聯;它是算術。所以,你需要一個字符數組,你需要擔心空終止。 –
@JonathanLeffler我試過了(請參閱上面的代碼更改)仍然不起作用?我在搞什麼? –
@StevenCarlson在您編輯的版本中,當您打印出'returnCheck'的值時,您沒有使用索引'[i]'。 –