- 论坛徽章:
- 0
|
大家好。
比如有现在这样一串字符串
char *str = "aaa=55 bbb=0.8 ccc=14";
要分别读出其中aaa, bbb, ccc三个参数的值, 其中bbb为double型, aaa, ccc为int
三个参数间用空格隔开。
现在我写了一段代码, 可以来分析这行字符, 并正确读出各值 。
但是我觉得我的代码中用的方法太差了, 感觉用这种方法太死了。
我的代码如下- #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;
- }
复制代码 感觉其中的read_bookmark_line, 被我写的太烂了,没有丝毫的方法性可言。
不知道大家对这段代码怎么看?或是有什么意见。
PS:这是我在写一个分析文件的函数, 类似于分析配置文件。读一行, 分析一行。
谢谢, 欢迎交流。 |
|