我沒有使用C很多時間,現在我不得不修改一小段代碼。有一件事我不明白:C,sprintf和字符串和int的「求和」
char filename[20];
filename[0] = '\0';
for (j=0; j < SHA_DIGEST_LENGTH; j++){
sprintf(filename + strlen(filename),"%02x",result[j]);
}
在第一行中,一個由20個字符組成的字符串被縮放。 在第二行中,第一個字符被設置爲'\ 0',我想這是一個空字符串。
在for循環中,我不理解文件名和它的長度之間的「總和」...... sprintf的firs參數應該是一個緩衝區,它將右側的格式化字符串複製到此處。這筆錢的結果是什麼?在我看來,我試圖總結一個數組和整數...
我失蹤了什麼?
如果你這樣做,不要忘記手動將其終止。 – zebediah49 2010-07-08 10:09:19
@zebediah,你是什麼意思? sprintf將始終添加一個NUL終結符。 – 2010-07-08 10:13:34
'它會在這個NUL上寫下一個十六進制字符(例如C),然後NUL-termiante再次'默認情況下'sprintf'是否添加'\ 0'? – Amarghosh 2010-07-08 10:14:33