如何在字節大小未知的兩個指針之間做字典對比,假設兩個數組大小相等, 例如實現以下函數返回-1或0或1,基於在comparecement和轉換每個字節的ASCIIlexicographic與未知字節大小進行比較 - in c
compare(const void *p1, const void *p2, int size)
編輯:我添加了字節比較的尺寸另一種說法,我怎麼能施展每個字節爲char和它們之間的比較?
如何在字節大小未知的兩個指針之間做字典對比,假設兩個數組大小相等, 例如實現以下函數返回-1或0或1,基於在comparecement和轉換每個字節的ASCIIlexicographic與未知字節大小進行比較 - in c
compare(const void *p1, const void *p2, int size)
編輯:我添加了字節比較的尺寸另一種說法,我怎麼能施展每個字節爲char和它們之間的比較?
您可能正在尋找strcmp(3)
函數。
更新
如果你的陣列是ASCII字符串的不和可能包含在任何位置的0x00
字節沒有實際意義什麼,那麼你需要的長度奧利指出,這樣你就可以使用memcmp(3)
功能:
int memcmp(const void *s1, const void *s2, size_t n);
更新#2
好了,現在我們已經establi捨棄你也想要不同的字節,你需要你自己的功能。像這樣(未經測試):
size_t cmp(const unsigned char *c1, const unsigned char *c2, ssize_t n) {
ssize_t i;
for (i=0; i<n; i++) {
if (c1[i] != c2[i])
return i;
}
-1;
}
這將讓你找到任何字節不同的字節值。如果沒有差異,請注意-1
退貨。這限制了你比較大小完全在ssize_t
之內的對象,該對象比size_t
類型小 - 但由於你正在比較其中兩個對象,所以我認爲每個對象最多隻能獲得一半的進程地址空間。
您需要一些方法來了解尺寸。顯式地(例如在數據中使用size
參數或字段)或隱式地(例如使用空終止符)。
並帶有大小參數?如何做到這一點? –
@ShlomiKomemi:通過遍歷數組直到一個與另一個不同,或者直到你到達最後。 –
該陣列具有未知大小?這將如何工作? – thumbmunkeys
不可能沒有數組大小? –
你需要知道要比較多少個數組元素 – thumbmunkeys