#include <stdio.h>
char * _fgets(char * line, int max_len, char * fptr)
{
char chr;
do {
chr = *fptr++;
*line = chr;
if (chr == '\n') continue;
if (chr == '\r') {
*line = '\0';
break;
}
if (chr == '\0')
break;
line ++;
} while (--max_len);
return fptr;
}
#define MAX_LINE_CNT 3
char str1[MAX_LINE_CNT][10], str3[MAX_LINE_CNT][10], * tmp;
int main(void)
{
char const file[] =
"main+0x20 -> main+0x10\r\nfunction1 -> function2+0x20\r\nfunction2+0x34 -> function3";
char line[256], * fptr = (char *)file;
char i, cnt = 0;
int arr2[MAX_LINE_CNT], arr4[MAX_LINE_CNT];
fptr = _fgets(line, sizeof(line), fptr);
while (*fptr != '\0') {
arr2[cnt] = 0; arr4[cnt] = 0;
sscanf(line
,"%[^+ ]%x%*s", str1
[cnt
],&arr2
[cnt
]); sscanf(tmp
," -> %[^+ ]%x%*s", str3
[cnt
],&arr4
[cnt
]); fptr = _fgets(line, sizeof(line), fptr);
if (++cnt >= MAX_LINE_CNT) break;
}
for (i = 0; i < cnt; i++) {
printf("Array1[%d] %s \n", i
+1, str1
[i
]); printf("Array2[%d] %x \n", i
+1, arr2
[i
]); printf("Array3[%d] %s \n", i
+1, str3
[i
]); printf("Array4[%d] %x \n", i
+1, arr4
[i
]); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpjaGFyICogX2ZnZXRzKGNoYXIgKiBsaW5lLCBpbnQgbWF4X2xlbiwgY2hhciAqIGZwdHIpCnsKCWNoYXIgY2hyOwoJZG8gewoJCWNociA9ICpmcHRyKys7CgkJKmxpbmUgPSBjaHI7CgkJaWYgKGNociA9PSAnXG4nKSBjb250aW51ZTsKCQlpZiAoY2hyID09ICdccicpIHsKCQkJKmxpbmUgPSAnXDAnOwoJCQlicmVhazsKCQl9CgkJaWYgKGNociA9PSAnXDAnKQoJCQlicmVhazsKCQlsaW5lICsrOwoJfSB3aGlsZSAoLS1tYXhfbGVuKTsKCXJldHVybiBmcHRyOwp9CgojZGVmaW5lIE1BWF9MSU5FX0NOVAkzCgpjaGFyIHN0cjFbTUFYX0xJTkVfQ05UXVsxMF0sIHN0cjNbTUFYX0xJTkVfQ05UXVsxMF0sICogdG1wOwoKaW50IG1haW4odm9pZCkKewogICAgY2hhciBjb25zdCBmaWxlW10gPSAKICAgIAkibWFpbisweDIwIC0+IG1haW4rMHgxMFxyXG5mdW5jdGlvbjEgLT4gZnVuY3Rpb24yKzB4MjBcclxuZnVuY3Rpb24yKzB4MzQgLT4gZnVuY3Rpb24zIjsKICAgIGNoYXIgbGluZVsyNTZdLCAqIGZwdHIgPSAoY2hhciAqKWZpbGU7CiAgICBjaGFyIGksIGNudCA9IDA7CiAgICBpbnQgYXJyMltNQVhfTElORV9DTlRdLCBhcnI0W01BWF9MSU5FX0NOVF07CiAgICBmcHRyID0gX2ZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZnB0cik7CiAgICB3aGlsZSAoKmZwdHIgIT0gJ1wwJykgewogICAgCXRtcCA9IHN0cnN0cihsaW5lLCIgLT4gIik7CiAgICAgICAgYXJyMltjbnRdID0gMDsgYXJyNFtjbnRdID0gMDsKICAgICAgICBzc2NhbmYobGluZSwiJVteKyBdJXglKnMiLCBzdHIxW2NudF0sJmFycjJbY250XSk7CiAgICAgICAgc3NjYW5mKHRtcCwiIC0+ICVbXisgXSV4JSpzIiwgc3RyM1tjbnRdLCZhcnI0W2NudF0pOwogICAgICAgIGZwdHIgPSBfZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBmcHRyKTsKICAgICAgICBpZiAoKytjbnQgPj0gTUFYX0xJTkVfQ05UKSBicmVhazsKICAgIH0KICAgIGZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgewogICAgCXByaW50ZigiQXJyYXkxWyVkXSAlcyBcbiIsIGkrMSwgc3RyMVtpXSk7CiAgICAJcHJpbnRmKCJBcnJheTJbJWRdICV4IFxuIiwgaSsxLCBhcnIyW2ldKTsKICAgIAlwcmludGYoIkFycmF5M1slZF0gJXMgXG4iLCBpKzEsIHN0cjNbaV0pOwogICAgCXByaW50ZigiQXJyYXk0WyVkXSAleCBcbiIsIGkrMSwgYXJyNFtpXSk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==