#define _crt_secure_no_warnings
#include
#include
#include
/* 鍵值對(「key = value」)字串,在開發中經常使用(鍵值對中間可能有n多空格,請去除空格)
鍵值對字串格式可能如下:
"key1 = value1"
"key2 = value2"
"key3 = value3"
"key4 = value4"
"key5 = "
"key6 ="
int getkeybyvalue(char *keyvaluebuf, char *keybuf, char *valuebuf, int * valuebuflen);
*/int
trimspace
(char
*inbuf,
char
*outbuf)
char
*p = inbuf;
int begin =0;
int end =
strlen
(p)-1;
int n =0;
if(end <0)
//從左往右移動,如果當前字元為空,而且沒有結束
while
(p[begin]
==' '
&& p[begin]!=0
)//從右往左移動,如果當前字元為空
while
(p[end]
==' '
&& end >0)
if(end ==0)
n = end - begin +1;
//非空元素個數
strncpy
(outbuf, p + begin, n)
; outbuf[n]=0
;return0;
}int
getkeybyvalue
(char
*keyvaluebuf,
char
*keybuf,
char
*valuebuf,
int* valuebuflen)
char
*p =
null
;int ret =0;
//查詢匹配鍵值
//"key4 = value4"找key4,找到返回首位址
p =strstr
(keyvaluebuf, keybuf);if
(p ==
null
)//如果找到,重新設定起點位置,跳過「key4」
//p = " = value4"
// "key4 = value4" -> " = value4"
p = p +
strlen
(keybuf)
;//查到=
p =strstr
(p,"=");
if(p ==
null
)//如果找到,重新設定起點位置,跳過「=」
//p = " value4"
// " = value4" -> " value4"
p = p +
strlen
("=");
// printf("strlen(=) = %d\n", strlen("="));
//取非空字元
ret =
trimspace
(p, valuebuf);if
(ret !=0)
//獲取長度,通過*間接賦值
*valuebuflen =
strlen
(valuebuf)
;return0;
}int
main
(void);
int len =0;
int ret =0;
#if 0
char
*p =
" abcddsgadsgefg "
;char buf[
100]=;
int ret1 =0;
ret1 =
trimspace
(p, buf);if
(ret1 !=0)
printf
("buf = %s\n"
, buf)
;#endif
ret =
getkeybyvalue
(keyval, key, value,
&len);if
(ret !=0)
printf
("val:%s\n"
, value)
;printf
("len:%d\n"
, len)
;return0;
}
C語言鍵值對查詢匹配
問題描述 鍵值對 key value 字串,在開發中經常使用 要求1 請自定義乙個介面,實現根據key獲取 要求2 編寫測試用例 要求3 鍵值對中間可能有n多空格,請去除空格 int getkeybyvalue char keyvaluebuf,char key,char value,char va...
Map獲取鍵值
map以按鍵 數值對的形式儲存資料,和陣列非常相似,在陣列中存在的索引,它們本身也是物件。map的介面 map 實現map map.entry map的內部類,描述map中的按鍵 數值對。sortedmap 擴充套件map,使按鍵保持公升序排列 關於怎麼使用,一般是選擇map的子類,而不直接用map...
C 獲取登錄檔指定鍵值
某些程式必須依賴指定執行環境。那麼讀取登錄檔來判斷此電腦是否有執行環境是個很不錯的辦法。因為每個軟體安裝之後都會在登錄檔中註冊對應的鍵值,並且有些鍵值是獨一無二的。那麼首先就需要找到那個具體的獨一無二的鍵值,以便程式在執行之前能夠去讀取以判斷。如下 class program 遍歷所有子項 節點 p...