fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. void ArraySize(FILE *fptr, int *maxLine, int *lineMaxChar);
  6. void Initialize(char ***data, int maxLine, int lineMaxChar);
  7. void FreeMalloc(char ***data, int maxLine);
  8.  
  9. int main(int argc, char *argv[])
  10. {
  11. FILE *fptr;
  12. char **data;
  13. int lineMaxChar = 0, maxLine = 0;
  14. int i,j;
  15. char buf[100];
  16.  
  17. if(argc == 2)
  18. {
  19. fptr = fopen(argv[1], "r");
  20. ArraySize(fptr, &maxLine, &lineMaxChar);
  21. Initialize(&data, maxLine, lineMaxChar);
  22. rewind(fptr);
  23. for(i = 0;fgets(data[i], lineMaxChar, fptr) != NULL; i++);
  24. {
  25. fgets(data[i], lineMaxChar, fptr);
  26. }
  27. FreeMalloc(&data, maxLine);
  28.  
  29. }
  30.  
  31. }
  32.  
  33. void ArraySize(FILE *fptr, int *maxLine, int *lineMaxChar)
  34. {
  35. int ch, count = 0;
  36. while((ch = fgetc(fptr)) != EOF)
  37. {
  38. count++;
  39. if(ch == '\n')
  40. {
  41. (*maxLine)++;
  42. if(count > *lineMaxChar)
  43. {
  44. *lineMaxChar = count;
  45. }
  46. count = 0;
  47. }
  48. }
  49. }
  50.  
  51. void Initialize(char ***data, int maxLine, int lineMaxChar)
  52. {
  53. int i;
  54. *data = calloc(maxLine, sizeof(char *));
  55. for(i = 0; i < maxLine; i++)
  56. {
  57. (*data)[i] = calloc(lineMaxChar, sizeof(char));
  58. }
  59.  
  60. }
  61.  
  62. void FreeMalloc(char ***data, int maxLine)
  63. {
  64. int i;
  65. for(i = 0; i < maxLine; i++)
  66. {
  67. free((*data)[i]);
  68. }
  69. free(*data);
  70. }
Success #stdin #stdout 0s 2164KB
stdin
Standard input is empty
stdout
Standard output is empty