Advertisement
avr39-ripe

stringPractice

Apr 9th, 2020
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.79 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. int strlenM(const char* str)
  4. {
  5.     int len{ 0 };
  6.     //for (; *str++; ++len);
  7.     while (*str++)
  8.     {
  9.         ++len;
  10.     }
  11.     return len;
  12. }
  13.  
  14. void strdupM(const char* src, char* dest)
  15. {
  16.     while (*src)
  17.     {
  18.         *dest++ = *src++;
  19.     }
  20.     *dest = '\0';
  21. };
  22.  
  23. char* strndupM(const char* src, char* dest, int size)
  24. {
  25.     for (int cnt{ 0 }; *dest++ = (cnt < size - 1 ? *src++ : 0); cnt++);
  26.     return dest;
  27. }
  28.  
  29. char* strcpyM(const char* src, char* dest)
  30. {
  31.     for (dest += strlenM(dest); *dest++ = *src++;);
  32.     return dest;
  33. }
  34.  
  35. char* strncpyM(const char* src, int size, char* dest)
  36. {
  37.     //int cnt{ strlenM(dest) };
  38.     //for (dest += cnt; *dest++ = (cnt < size - 1 ? *src++ : '\0'); cnt++);
  39.     int cnt{ 0 };
  40.     for (; *dest++; ++cnt);
  41.     --dest;
  42.     for (; *dest++ = (cnt < size - 1 ? *src++ : '\0'); cnt++);
  43.     return dest;
  44. }
  45.  
  46. const char* strchM(const char* str, const char ch)
  47. {
  48.     while (*str)
  49.     {
  50.         if (*str == ch) return str;
  51.         ++str;
  52.     }
  53.     return nullptr;
  54. }
  55.  
  56. //"Hello, bright word! Hello, darling! Hello, John!"
  57. //"Hello, world!"[7]
  58. //
  59. //"w+"[1]
  60. //
  61. //(str + 7)
  62.  
  63. const char* strstrM(const char* str, const char* search)
  64. {
  65.     for (int strIdx{ 0 }; str[strIdx]; ++strIdx)
  66.     {
  67.         for (int searchIdx{ 0 }; str[strIdx + searchIdx] == search[searchIdx]; ++searchIdx)
  68.         {
  69.             if (!search[searchIdx + 1]) { return str + strIdx; }
  70.         }
  71.     }
  72.     return nullptr;
  73. }
  74.  
  75. int main()
  76. {
  77.     //char str[20]{ 'H', 'e', 'l','l','o',' ',',','w', 'o', 'r','l','d','!' };
  78.     char str[150]{ "Hello, bright world! Hello, darling! Hello, John!" };
  79.     char* strDyn{ new char[50]{ "sdfs0.00" } };
  80.     char* str1{ new char[30]{" bright world!"} };
  81.     double num{ 36.0 };
  82.  
  83.     num = atof(strDyn);
  84.  
  85.     if (num == 0 and strDyn[0] == '0')
  86.     {
  87.         std::cout << "Num really is zero!";
  88.     }
  89.     else if (num == 0 and strDyn[0] != '0')
  90.     {
  91.         std::cout << "Error converting string to num";
  92.     }
  93.     else
  94.     {
  95.         std::cout << "Num is: " << num << '\n';
  96.     }
  97.  
  98.     //strDyn[0] = tolower(strDyn[0]);
  99.     //str1[0] = toupper(str1[0]);
  100.  
  101.     /*char strDyn[10]{ "Hello" };
  102.     char str1[10]{"Hello"};*/
  103.  
  104.     /*strcat_s(strDyn, 50, str1);
  105.  
  106.     std::cout << "Output of strDyn: " << strDyn << ' ' << strlen(strDyn) << '\n';*/
  107.     return 0;
  108.     //char inStr[50];
  109.     //int num{ 0 };
  110.  
  111.     //std::cout << "Enter some number into num\n";
  112.     //std::cin >> num;
  113.     //std::cout << "Output of num: " << num << '\n';
  114.  
  115.     //std::cin.ignore(32767, '\n');
  116.  
  117.     //std::cout << "Enter some str into inStr\n";
  118.     //std::cin.getline(inStr,50);
  119.     //std::cout << "Output of inStr: " << inStr << ' ' << strlenM(inStr)<< '\n';
  120.  
  121.     //std::cout << "Enter some number into num\n";
  122.     //std::cin >> num;
  123.     //std::cout << "Output of num: " << num << '\n';
  124.    
  125.     //std::cin >> inStr;
  126.     //std::cout << "Output of inStr: " << inStr << ' ' << strlenM(inStr) << '\n';
  127.  
  128.  
  129.     /*char subStr[200]{ "worl" };
  130.     const char* res{ strstrM(str,subStr) };*/
  131.     //if (res)
  132.     //{
  133.     //  std::cout << subStr << " found! At position " << res - str << '\n';
  134.     //}
  135.     //else
  136.     //{
  137.     //  std::cout << subStr << " NOT found!\n";
  138.     //}
  139.  
  140.     //strdupM("Hello", subStr);
  141.     //res = str;
  142.     //while (res = strstrM(res, subStr))
  143.     //{
  144.     //  std::cout << subStr << " found at position " << res - str << '\n';
  145.     //  ++res;
  146.     //}
  147.  
  148.     //char searchCh{ 'q' };
  149.     //const char* res{ strchM(str, searchCh) };
  150.     //if (res)
  151.     //{
  152.     //  std::cout << *res << " found!\n";
  153.     //}
  154.     //else
  155.     //{
  156.     //  std::cout << searchCh << " NOT found!\n";
  157.     //}
  158.  
  159.     //searchCh = 'l';
  160.     //res = str;
  161.     //while (res = strchM(res, searchCh))
  162.     //{
  163.     //  std::cout << *res << " found at position " << res - str << '\n';
  164.     //  ++res;
  165.     //}
  166.  
  167.     /*strncpyM(str1, 30, strDyn);*/
  168.     //strndupM("Test str copy",5, str1);
  169.     /*std::cout << strDyn << '\n';*/
  170.     //std::cout << strlenM(strDyn) << '\n';
  171.     //char* strOut{ strDyn };
  172.     //while (*strOut)
  173.     //{
  174.     //  std::cout << *strOut++;
  175.     //}
  176.     //std::cout << '\n';
  177.     delete[] strDyn;
  178.     delete[] str1;
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement