用動態數組實現串連接操作-作業0402-(串)

  1. /*用動態數組實現串連接操作。從屏幕輸入:
  2. *       串1"Get busy living, "
  3. *       串2"Or get busy dying."
  4. * 從屏幕輸出:
  5. *       "Get busy living, Or get busy dying."*/
  6. #include <stdio.h>
  7. #include <iostream.h>
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #define MAXSIZE_S1 100
  11. #define MAXSIZE_S2 100
  12. struct HString
  13. {
  14.     char *ch;
  15.     int length;
  16. };
  17. int StrAssign(HString &S,char * chars)                
  18. {
  19.     int i,j;
  20.     char *c;
  21.     if (S.ch) free(S.ch);
  22.     for(i = 0, c = chars; *c; i++, c++);
  23.     if(!i)
  24.     {
  25.         S.ch=NULL;
  26.         S.length=0;
  27.     }
  28.     else
  29.     {
  30.         if(!(S.ch=(char *)malloc(i*sizeof(char))))
  31.         { 
  32.             cout<<"OVERFLOW!"<<endl;
  33.             return (0);
  34.         }
  35.         else
  36.         { 
  37.             for(j = 0; j <= i; j++)
  38.                 S.ch[j] = chars[j];
  39.                 S.length = i;
  40.         }
  41.     }
  42.     return(0);
  43. }
  44. int Concat(HString &T ,HString S1,HString S2)
  45. {
  46.     int i;
  47.     if (T.ch) free(T.ch);
  48.     T.length=S1.length+S2.length;
  49.     if(!(T.ch=(char*)malloc((S1.length+S2.length)*sizeof(char))))
  50.     {
  51.         cout<<"overflow"<<endl;
  52.         return 0;
  53.     }
  54.     for(i=0;i<=S1.length;i++)
  55.     {
  56.         T.ch[i]=S1.ch[i];
  57.     }
  58.     for(i=0;i<=S2.length;i++)
  59.     {
  60.         T.ch[S1.length+i]=S2.ch[i];
  61.     }
  62.     T.ch[i+S1.length]=NULL; 
  63.     cout<<T.ch<<endl;
  64.     return 0;
  65. }
  66. int main()
  67. {
  68.     HString T,S1,S2;
  69.     char c;
  70.     char char_S1 [MAXSIZE_S1];
  71.     char char_S2 [MAXSIZE_S2];
  72.     T.ch = S1.ch = S2.ch = NULL;
  73.     T.length = S1.length = S2.length = 0;
  74.     cout<<"Enter intput char_S1:"<<endl;   
  75.     gets(char_S1);
  76.     cout<<"Enter intput char_S2:"<<endl;
  77.     gets(char_S2);
  78.     StrAssign(S1,char_S1);
  79.     StrAssign(S2,char_S2);
  80.     printf("%s/n%s/n", S1.ch, S2.ch);
  81.     Concat(T,S1,S2);
  82.     return 0;
  83. }
 
發佈了41 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章