tilblackout
tilblackout
2018-12-13 15:28
采纳率: 88%
浏览 821

C语言实现strcat的问题

#include <stdio.h>
#include <stdlib.h>
#define MAX_STR_LEN 10000
char *strcpy(char *t,char *s){
    char *strDest=t;
    while((*t++=*s++));
    return strDest;
}
char * str_cat(char *str,char *s)
{
    char *temp;
    temp = (char *)malloc(sizeof(char)*MAX_STR_LEN+1);
    strcpy(temp,str);
    while (*temp!='\0')
        temp++;
    while (*s!='\0')
    {
      *temp++=*s++;
    }
    *temp='\0';
    return temp;
}
int main()
{
    char s[MAX_STR_LEN], str[MAX_STR_LEN], *p;
    #ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
//  freopen("out.txt", "w", stdout);
    #endif // ONLINE_JUDGE
    while(gets(s) != NULL && gets(str) != NULL)
    {
        p = str_cat(str, s);
        puts(str);
        puts(s);
        puts(p);
        free(p);
    }
    return 0;
}

函数要不改变str和s,动态内存分配一个新变量,结果放到这个变量然后返回。

哪里出错了呢..最后的temp总是空.

要求输入
Look!
I love china!
输出
I love china!
 Look!
I love china! Look!
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • caozhy
    已采纳
    char * str_cat(char *str,char *s)
    {
        char *temp, *temp1;
        temp1 = temp = (char *)malloc(sizeof(char)*MAX_STR_LEN+1);
        strcpy(temp,str);
        while (*temp!='\0')
            temp++;
        while (*s!='\0')
        {
          *temp++=*s++;
        }
        *temp='\0';
        return temp1; //你返回的temp,已经被你指向了字符串的结尾,而不是开头的那个temp了。
    }
    

    图片说明

    如果问题解决,请采纳,并且顺便采纳下 https://ask.csdn.net/questions/715666 谢谢

    点赞 评论

相关推荐