Advertisement
Guest User

1_fix_string

a guest
Sep 21st, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. using namespace std;
  5.  
  6. string inputString();
  7. int inputForceInteger(string);
  8. char* copyStrs(string, char *);
  9. char* subStrs(char*,char *);
  10. char* getStrs(int,int,char *,char *);
  11.  
  12. int main()
  13. {
  14. char *strs;
  15. char *sub;
  16.  
  17. string s1 = inputString();
  18. strs = copyStrs(s1, strs);
  19. sub = subStrs(strs,sub);
  20. std::cout << "sub string: [" << sub << "]" << endl;
  21.  
  22. return 0;
  23. }
  24.  
  25. string inputString()
  26. {
  27. cout << "Type a string: ";
  28. string s;
  29.  
  30. getline(cin,s, '\n');
  31. return s;
  32. }
  33.  
  34. char* copyStrs(string s, char *strs)
  35. {
  36. strs = (char*) malloc(s.length() + 1 * sizeof(char));
  37.  
  38. int i = 0;
  39. for (i = 0; i < s.length(); i++) strs[i] = s.at(i);
  40.  
  41. strs[i] ='\0';
  42. return strs;
  43. }
  44.  
  45. char* subStrs(char* strs, char* newStrs)
  46. {
  47. int start;
  48. int end;
  49.  
  50. // 2 - error when input # integer type
  51. start = inputForceInteger("Start point (Integer value): ");
  52. end = inputForceInteger("End point (Integer value): ");
  53.  
  54. newStrs = getStrs(start,end,strs,newStrs);
  55. return newStrs;
  56. }
  57.  
  58. int inputForceInteger(string cmt)
  59. {
  60. string s;
  61. do
  62. {
  63. cout << cmt;
  64. getline(cin,s, '\n');
  65.  
  66. } while(atol(s.c_str()) == 0 && !(s.length() == 1 && s[0] == '0'));
  67.  
  68. return atoi(s.c_str());
  69. }
  70.  
  71. char* getStrs(int start,int end,char* strs,char* newStrs)
  72. {
  73. if(end > strlen(strs))
  74. {
  75. cout << "End value too large" << endl;
  76. return "\0";
  77. }
  78.  
  79. int len = end - start + 1;
  80. newStrs = (char*) calloc (len, sizeof(char));
  81.  
  82. int i = 0;
  83. for (i=0; i < len - 1; i++) newStrs[i] = strs[start + i];
  84. newStrs[i] = '\0';
  85.  
  86. return newStrs;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement