Advertisement
dllbridge

10-1

Apr 8th, 2022
898
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.75 KB | None | 0 0
  1.  
  2.  
  3.  
  4. //  Требуется создать полноценную замену секретой функции int sz2szHex(char *sz, const char *psz);
  5. //  Известно, что оригинал занимал 30 строк Си-кода с учётом пустых строк. В обычном оформлении.
  6. //  Код функции размещён в объектном файле и работоспособен. Желательно воссоздать её аналог в
  7. //  учебных целях.
  8. //---------------------------------------------------------------------------------------
  9. #include       <stdio.h>
  10.  
  11.  
  12.  
  13. char    szSource1[71] = "7542FB6685F9FD8F37D56FAF62F0BB4563684A51539E4B26F0840DB361E0027C",
  14.         szSource2[71] = "7542FB6685F9FD8F37i W_56FAF62F0BB4563684A51539E4B26F0840D1E0027C",
  15.         szSource3[71] = "7542FB6685F9FD8F37D5 FAF62F0BB4563684A51539E4B26F0840DB361E0027C",
  16.         szSource4[71] = "7542FB6685F9FD8F37it56FAF62F0BB4563684A51539E4B26F0840D1E0027C11",
  17.         szDestin [71];    
  18.  
  19.  
  20.  
  21.  
  22. int sz2szHex(char *sz, const char *psz);
  23.  
  24.  
  25. ///////////////////////////////////////////////////////////////////////////////
  26. int main()                                                                   //
  27. {
  28.    
  29.     int res = sz2szHex(szDestin, szSource1);    printf("%d, %s\n", res, szDestin);
  30.         res = sz2szHex(szDestin, szSource2);    printf("%d, %s\n", res, szDestin); 
  31.         res = sz2szHex(szDestin, szSource3);    printf("%d, %s\n", res, szDestin);
  32.         res = sz2szHex(szDestin, szSource4);    printf("%d, %s\n", res, szDestin);     
  33.  
  34. }
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43. //  sz <- psz
  44. //  Перемещает в *sz из *psz только символы, соответствующие 16-теричным числам:
  45. //  1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
  46. //  Возвращает кол-во некорректных-отфильтрованных символов.
  47. /////////////////////////////////////////////////////////////////////////////////
  48. int sz2szHex(char *sz, const char *psz)                                        //
  49. {
  50.    
  51.     int k = 0,
  52.         r = 0;  
  53.    
  54.     for(int i = 0; psz[i]; i++)
  55.     {
  56.        if(psz[i] > 47)
  57.        {
  58.           if(psz[i  ] < 58) {
  59.               sz[k++] = psz[i];   continue;
  60.           }
  61.          
  62.           if(psz[i  ] >  96)
  63.           if(psz[i  ] < 103) {                 
  64.               sz[k++] = psz[i];   continue;                //   a = 97, b = 98, c = 99, d = 100, e = 101, f = 102
  65.           }      
  66.          
  67.           if(psz[i  ] >  64)
  68.           if(psz[i  ] <  71) {                 
  69.               sz[k++] = psz[i];   continue;                //   A = 65, B = 66, C = 67, D =  68, E =  69, F =  70
  70.           }      r++;                                  
  71.        }  else   r++;                          
  72.     }    
  73.    
  74.     sz[k] = 0;
  75.    
  76. return r;  
  77. }
  78.  
  79.  
  80.  
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement