|
从大小为size的data里面取出第linenum行的字符串,然后放到target里面去。
行数少的data还行,行数一多就乱七八糟了,能不能帮忙Debug一下?或者帮忙写个有同样功能的CODE出来也行。
- int gMotionDefGetLine(byte* data, size_t size, int linenum, byte* target){
- size_t pos, buf_pos = 0;
- int lineCount = 0;
- byte buf[MAX_LINE_SIZE];
- memset(buf, 0, MAX_LINE_SIZE);
-
- for (pos = 0; pos < size; pos++){
- if (data[pos] == '\n'){
- if (lineCount == linenum){
- memcpy(target, buf, buf_pos);
- target[buf_pos] = 0;
- return buf_pos;
- }
- lineCount++;
- pos++;
- buf_pos = 0;
- memset(buf, 0, MAX_LINE_SIZE);
- }
- buf[buf_pos] = data[pos];
- buf_pos++;
- if (buf_pos > MAX_LINE_SIZE)
- return -1;
- }
- return -1;
- }
复制代码
下面是让这段代码出错的data:
- 4
- 3
- 8
- 6
- -0.999984 0.000000 25.000060 -10.000013 0.000000 30.000153 0.000000 0.000000 25.000118
- -25.000060 0.000000 110.000312 -80.000216 0.000000 145.000442 -25.000060 0.000000 110.000312 -80.000216 0.000000 145.000442
- -25.000060 0.000000 110.000312 -80.000216 0.000000 145.000442 -25.000060 0.000000 110.000312 -80.000216 0.000000 145.000442
- 25.000060 0.000000 60.000191 -105.000334 0.999984 147.000468 25.000060 0.000000 60.000191 -105.000334 0.999984 147.000468
- 25.000060 0.000000 60.000191 -105.000334 0.999984 147.000468 25.000060 0.000000 60.000191 -105.000334 0.999984 147.000468
- 0.000000 0.000000 9.999955 -90.000115 0.000000 135.000201 -0.599945 0.000000 10.600072 -90.000344 0.000000 135.000716
- 0.000000 0.000000 9.999955 -90.000115 0.000000 135.000201 -0.599945 0.000000 10.600072 -90.000344 0.000000 135.000716
- 0.000000 0.000000 9.999955 -90.000115 0.000000 135.000201 -0.599945 0.000000 10.600072 -90.000344 0.000000 135.000716
复制代码
谢谢了! |
|