c語言習題(2)--鍵值對,字串反轉
阿新 • • 發佈:2019-02-01
/**** 3、鍵值對("key = valude")字串,在開發中經常使用; 要求1:請自己定義一個介面,實現根據key獲取valude; 要求2:編寫測試用例。 要求3:鍵值對中間可能有n多空格,請去除空格 注意:鍵值對字串格式可能如下: "key1 = valude1" "key2 = valude2" "key3 = valude3" "key4 = valude4" "key5 = " "key6 =" "key7 = " ***/ /*** 作者:一葉扁舟 作用:鍵值對 時間:15:32 2017/5/7 ***/ #include <stdio.h> #include <stdlib.h> #include <string.h> //去空格 int trimSpace1(char *inbuf, char *outbuf){ char * result = outbuf; if (inbuf == NULL || outbuf == NULL){ return -1; } while (*inbuf != '\0'){ if (*inbuf == ' '){ inbuf++; } else{ *result = *inbuf; result++; inbuf++; } } *result = '\0'; return 1; } int getKeyByValude(char *keyvaluebuf,char *keybuf, char *valuebuf, int * valuebuflen){ if (keyvaluebuf == NULL || keybuf == NULL || valuebuf == NULL){ return -1; } char tempString[200]; char *p = tempString; char *key = keybuf; char *value = valuebuf; char buff[100]; int i = 0; int length = 0; //將傳入的字串過濾掉空格 trimSpace1(keyvaluebuf, tempString); //首先將等號左邊的key取出來,即 while ( p[i]!= '='){ i++; } memcpy(buff,p,i); buff[i] = '\0'; //找到對應的key值 if (strcmp(buff, key) == 0){ int j = strlen(p) - i -1; memcpy(valuebuf,p +(i+1),j); valuebuf[j] = '\0'; *valuebuflen = j; } else{//沒有 *valuebuflen = 0; valuebuf[0] = '\0'; } return 1; } void main(){ char *keyValuSource = "name = valude1"; char key[100]="name1" ; char value[100]; int valueLength = 0; int temp = getKeyByValude(keyValuSource, key, value, &valueLength); if (temp == 1){ printf("key:%s\n",key); printf("value:%s\n", value); printf("value的長度:%d\n", valueLength); } else{ printf("調用出錯\n"); } printf("\n"); system("pause"); }