fork(1) download
  1. #include <stdio.h>
  2.  
  3. char * _fgets(char * line, int max_len, char * fptr)
  4. {
  5. char chr;
  6. do {
  7. chr = *fptr++;
  8. *line = chr;
  9. if (chr == '\n') continue;
  10. if (chr == '\r') {
  11. *line = '\0';
  12. break;
  13. }
  14. if (chr == '\0')
  15. break;
  16. line ++;
  17. } while (--max_len);
  18. return fptr;
  19. }
  20.  
  21. #define MAX_LINE_CNT 3
  22.  
  23. char str1[MAX_LINE_CNT][10], str3[MAX_LINE_CNT][10], * tmp;
  24.  
  25. int main(void)
  26. {
  27. char const file[] =
  28. "main+0x20 -> main+0x10\r\nfunction1 -> function2+0x20\r\nfunction2+0x34 -> function3";
  29. char line[256], * fptr = (char *)file;
  30. char i, cnt = 0;
  31. int arr2[MAX_LINE_CNT], arr4[MAX_LINE_CNT];
  32. fptr = _fgets(line, sizeof(line), fptr);
  33. while (*fptr != '\0') {
  34. tmp = strstr(line," -> ");
  35. arr2[cnt] = 0; arr4[cnt] = 0;
  36. sscanf(line,"%[^+ ]%x%*s", str1[cnt],&arr2[cnt]);
  37. sscanf(tmp," -> %[^+ ]%x%*s", str3[cnt],&arr4[cnt]);
  38. fptr = _fgets(line, sizeof(line), fptr);
  39. if (++cnt >= MAX_LINE_CNT) break;
  40. }
  41. for (i = 0; i < cnt; i++) {
  42. printf("Array1[%d] %s \n", i+1, str1[i]);
  43. printf("Array2[%d] %x \n", i+1, arr2[i]);
  44. printf("Array3[%d] %s \n", i+1, str3[i]);
  45. printf("Array4[%d] %x \n", i+1, arr4[i]);
  46. }
  47. return 0;
  48. }
Success #stdin #stdout 0s 2156KB
stdin
Standard input is empty
stdout
Array1[1] main 
Array2[1] 20 
Array3[1] main 
Array4[1] 10 
Array1[2] function1 
Array2[2] 0 
Array3[2] function2 
Array4[2] 20 
Array1[3] function2 
Array2[3] 34 
Array3[3] function3 
Array4[3] 0