fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define d_CheckStrNum 2
  5. #define d_CheckStrList {d_HttpAddressStr, d_HttpsAddressStr}
  6. #define d_HttpAddressStr "\"http://"
  7. #define d_HttpsAddressStr "\"https://"
  8. #define d_CheckDenyStrNum 4
  9. #define d_CheckDenyStrList {d_JpegThumbStr, d_JpgThumbStr, d_GifThumbStr, d_PngThumbStr}
  10. #define d_JpegThumbStr "s.jpeg"
  11. #define d_JpgThumbStr "s.jpg"
  12. #define d_GifThumbStr "s.gif"
  13. #define d_PngThumbStr "s.png"
  14. #define d_BufferInSize 1024
  15. #define d_BufferOutSize 1024
  16.  
  17. int ExtractInnerDC(FILE *s1, FILE *s2);
  18. int OptimizeDC(FILE *s1, FILE *s2);
  19. int SafeFileClose(FILE *s1);
  20.  
  21. int main(int argc, char *argv[]){
  22. FILE *fin, *fout, *ftemp;
  23.  
  24. if((fin = fopen("list.txt", "rb")) && (fout = fopen("list.DCurls", "wt")) && (ftemp = fopen("~temp.DCurls", "w+t"))){
  25. ExtractInnerDC(fin, ftemp);
  26. OptimizeDC(ftemp, fout);
  27. SafeFileClose(ftemp);
  28. remove("~temp.DCurls");
  29. }
  30. else printf("file open error.\n");
  31.  
  32. SafeFileClose(fin);
  33. SafeFileClose(fout);
  34. SafeFileClose(ftemp);
  35.  
  36. return 0;
  37. }
  38.  
  39. int ExtractInnerDC(FILE *s1, FILE *s2){
  40. char bufferin[d_BufferInSize], bufferout[d_BufferOutSize], temp, *dynamicbip, *dynamicbop, *strlist[d_CheckStrNum] = d_CheckStrList, **dynamicslp;
  41. int mode = 0, readsuccessnum, counter, accordflag = 0, i, strlistlen[d_CheckStrNum], *dynamicsllp;
  42.  
  43. for(i = 0, dynamicslp = strlist, dynamicsllp = strlistlen; i < d_CheckStrNum; i++) *dynamicsllp++ = strlen(*dynamicslp++);
  44. dynamicbop = bufferout;
  45. while(readsuccessnum = fread(dynamicbip = bufferin, sizeof(char), d_BufferInSize * sizeof(char), s1)){
  46. for(counter = 0; counter < readsuccessnum; counter++, dynamicbip++){
  47. if(*dynamicbip == '"') mode++;
  48. if(mode){
  49. *dynamicbop++ = *dynamicbip;
  50. if(mode == 2){
  51. *dynamicbop = '\0';
  52. for(i = 0, dynamicslp = strlist, dynamicsllp = strlistlen; i < d_CheckStrNum && !(accordflag = !strncmp(bufferout, *dynamicslp++, *dynamicsllp++)); i++);
  53. if(accordflag) fprintf(s2, "%s\n", bufferout);
  54. accordflag = mode = 0;
  55. dynamicbop = bufferout;
  56. }
  57. }
  58. }
  59. }
  60.  
  61. fseek(s1, SEEK_SET, 0);
  62. fseek(s2, SEEK_SET, 0);
  63.  
  64. return 0;
  65. }
  66.  
  67. int OptimizeDC(FILE *s1, FILE *s2){
  68. char buffer[d_BufferOutSize], *dynamicbp, *denystrlist[d_CheckDenyStrNum] = d_CheckDenyStrList, **dynamicdslp;
  69. int accordflag, i, j, limit, denystrlistlen[d_CheckDenyStrNum], *dynamicdsllp;
  70.  
  71. for(i = 0, dynamicdslp = denystrlist, dynamicdsllp = denystrlistlen; i < d_CheckDenyStrNum; i++) *dynamicdsllp++ = strlen(*dynamicdslp++);
  72. while(fgets(buffer, d_BufferOutSize - 1, s1) != NULL){
  73. for(i = 0, dynamicdslp = denystrlist, dynamicdsllp = denystrlistlen, accordflag = 0; i < d_CheckDenyStrNum && !accordflag; i++, dynamicdslp++, dynamicdsllp++) for(j = 0, dynamicbp = buffer, limit = strlen(buffer) - *dynamicdsllp; j < limit && !(accordflag = !strncmp(dynamicbp++, *dynamicdslp, *dynamicdsllp)); j++);
  74. if(!accordflag) fputs(buffer, s2);
  75. }
  76.  
  77. return 0;
  78. }
  79.  
  80. int SafeFileClose(FILE *s1){
  81.  
  82. if(s1 != NULL){
  83. fclose(s1);
  84. s1 = NULL;
  85. }
  86.  
  87. return 0;
  88. }
  89.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty