将两个字符串连接。解决了c语言输入出现溢出现象

来源:互联网 发布:c语言打印杨辉三角8行 编辑:程序博客网 时间:2024/06/04 18:45
#include <stdio.h>
#include <stdlib.h>

#include <malloc.h>

int main()
{
    char*getstr(void);
    voidconcatenatc(char *s1,char *s2,char * s3);
    char*s1,*s2,*s3;
   printf("Please input String1:\n");
    s1 =getstr();
   printf("Please input String2:\n");
    s2 =getstr();
    s3 = (char*)malloc(sizeof(char)*(strlen(s1)+strlen(s2)));//要先分配地址才能使用。
   concatenatc(s1,s2,s3);/
    printf("Thenew string is:%s",s3);
    return 0;
}


void concatenatc(char *s1,char *s2,char * s3)//字符拼接
{
    int i = 0,j= 0;
    for(i =0;s1[i]!='\0';i++)
    {
       s3[i] = s1[i];
    }
    for(j =0;s2[j]!='\0';j++)
    {
       s3[i+j] = s2[j];
    }
    s3[i+j] ='\0';
}

char * getstr(void) 
    {
       char c,*str=NULL;
       int n=0;
       while (1)
       {
          c=getchar();
          str=(char*)str?realloc(str,sizeof(char)*++n):malloc(sizeof(char)*++n);
          if (c=='\n'||c==EOF)
          {
              str[n-1]='\0';      
              break;
          }//if
          str[n-1]=c;
       }
       return str;
    }

0 0
原创粉丝点击