avr39-ripe

work1

Apr 6th, 2020
371
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.96 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. int strlenM(const char* str)
  4. {
  5.     int len{ 0 };
  6.     for (; *str++; ++len);
  7.  
  8.     return len;
  9. }
  10.  
  11.  
  12. char* strdupM(const char* src, char* dest)
  13. {
  14.     char* destOrig{ dest };
  15.     while (*dest++ = *src++);
  16.     return destOrig;
  17. };
  18.  
  19. char* strndupM(const char* src, char* dest, int maxSize)
  20. {
  21.     char* destOrig{ dest };
  22.     for (--maxSize; *dest++ = (maxSize ? *src++ : '\0'); --maxSize);
  23.     return destOrig;
  24. }
  25.  
  26. char* strcatM(const char* append, char* dest)
  27. {
  28.     char* destOrig{ dest };
  29.     while (*dest++);
  30.     --dest;
  31.     while (*dest++ = *append++);
  32.     return destOrig;
  33. }
  34.  
  35. char* strncatM(const char* append, char* dest, int maxSize)
  36. {
  37.     char* destOrig{ dest };
  38.     while(*dest++);
  39.     --dest;
  40.     for (--maxSize; *dest++ = (maxSize ? *append++ : '\0'); --maxSize);
  41.     return destOrig;
  42. }
  43.  
  44. const char* strchM(const char* str, char ch)
  45. {
  46.     while (*str++)
  47.     {
  48.         if (*str == ch) return str;
  49.     }
  50.     return nullptr;
  51. }
  52.  
  53. //str = "Hello, bright world!"[7]
  54. //
  55. //search = "bri123"[0]
  56.  
  57. const char* strstrM(const char* str, const char* search)
  58. {
  59.     for (int strIdx{ 0 }; str[strIdx]; ++strIdx)
  60.     {
  61.         for (int searchIdx{ 0 }; str[strIdx + searchIdx] == search[searchIdx]; ++searchIdx)
  62.         {
  63.             if (!search[searchIdx + 1]) { return str + strIdx; }
  64.         }
  65.     }
  66.     return nullptr;
  67. }
  68.  
  69. int main()
  70. {
  71.     //char str[20]{ 'H','e','l','l','o','!','\0' };
  72.     char str[120]{ "world, bright world!" };
  73.     char* str1{ new char[20]{"Hello, world!"} };
  74.     //std::cout << strlenM("Hello, mr. President!") << '\n';
  75.     //std::cout << str1;
  76.  
  77.     char* strCopy{ new char[50] {"Hello, "} };
  78.     char* inStr{new char[3]};
  79.     std::cout << "Enter some string to inStr\n";
  80.     std::cin.getline(inStr, 3);
  81.     //std::cin >> inStr;
  82.     std::cout << "inStr = " << inStr << " strlenM = " << strlenM(inStr)<< '\n';
  83.     //std::cin >> inStr;
  84.     //std::cout << "inStr = " << inStr << " strlenM = " << strlenM(inStr) << '\n';
  85.     //strdupM(str, strCopy);
  86.     //std::cout << strndupM(str, strCopy,50) << '\n';
  87.     //std::cout << strcatM(str, strCopy) <<' ' << strlenM(strCopy) <<  '\n'; //Hello, bright world!
  88.  
  89.     //char searchCh{ 'z' };
  90.     //const char* res{ strchM(str, searchCh) };
  91.     //if (res)
  92.     //{
  93.     //    std::cout << *res << " found!";
  94.     //}
  95.     //else
  96.     //{
  97.     //    std::cout << searchCh << " NOT found!";
  98.     //}
  99.  
  100.     //const char subStr[]{ "world" };
  101.     //const char* res{ strstrM(str,subStr) };
  102.     //if (res)
  103.     //{
  104.     //    std::cout << subStr << " found! At position " << res - str << '\n';
  105.     //}
  106.     //else
  107.     //{
  108.     //    std::cout << subStr << " NOT found!\n";
  109.     //}
  110.     //const char* secondMatch{ strstrM(res + strlenM(subStr),subStr) };
  111.     //if (secondMatch)
  112.     //{
  113.     //    std::cout << subStr << " found! At position " << secondMatch - str << '\n';
  114.     //}
  115.     //else
  116.     //{
  117.     //    std::cout << subStr << " NOT found!" << '\n';
  118.     //}
  119.  
  120.  
  121.  
  122. }
Advertisement
Add Comment
Please, Sign In to add comment