- 論壇徽章:
- 0
|
大家好。
比如有現(xiàn)在這樣一串字符串
char *str = "aaa=55 bbb=0.8 ccc=14";
要分別讀出其中aaa, bbb, ccc三個參數(shù)的值, 其中bbb為double型, aaa, ccc為int
三個參數(shù)間用空格隔開。
現(xiàn)在我寫了一段代碼, 可以來分析這行字符, 并正確讀出各值 。
但是我覺得我的代碼中用的方法太差了, 感覺用這種方法太死了。
我的代碼如下- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- static int
- read_bookmark_line(const char *cp1, int *aaa, double *bbb, int *ccc)
- {
- char *cp3;
- cp3 = strchr(cp1, '=');
- if (strncmp(cp1, "aaa", cp3 - cp1) == 0) {
- *aaa = atoi(++cp3);
- }
- cp1 = cp3++;
- cp3 = strchr(cp1, '=');
- while (*++cp1 != ' ');
- while (*++cp1 == ' ');
- if (strncmp(cp1, "bbb", cp3 - cp1) == 0) {
- *bbb = atof(++cp3);
- }
- cp1 = cp3++;
- cp3 = strchr(cp1, '=');
- while (*++cp1 != ' ');
- while (*++cp1 == ' ');
- if (strncmp(cp1, "ccc", cp3 - cp1) == 0) {
- *ccc = atoi(++cp3);
- }
- if (*aaa == 0)
- return 0;
- return 1;
- }
- char *str = "aaa=55 bbb=0.8 ccc=14";
- int
- main(void)
- {
- int aaa, ccc;
- double bbb;
- char *s = str;
- read_bookmark_line(s, &aaa, &bbb, &ccc);
- printf("aaa= %d, bbb = %f, ccc = %d\n",
- aaa, bbb, ccc);
- return 0;
- }
復(fù)制代碼 感覺其中的read_bookmark_line, 被我寫的太爛了,沒有絲毫的方法性可言。
不知道大家對這段代碼怎么看?或是有什么意見。
PS:這是我在寫一個分析文件的函數(shù), 類似于分析配置文件。讀一行, 分析一行。
謝謝, 歡迎交流。 |
|