用动态数组实现串连接操作-作业0402-(串)

本文介绍了一种使用动态数组来实现字符串连接的方法。通过两个示例字符串“Get busy living,” 和 “Or get busy dying.”,演示了如何创建动态数组、分配内存、复制字符串并进行连接。最终输出连接后的完整字符串。
摘要由CSDN通过智能技术生成
  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. }
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值