宅在家 发表于 2020-11-10 22:40:29

小白求助

实现strcat的功能,这样为什么不行啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
谢谢大佬们{:10_266:}

#include <stdio.h>
#define MAX 1024

int main()
{
    char str1;
    char str2;
    char* target1 = str1;
    char* target2 = str2;
    printf("Please input the first string:");
    fgets(str1, MAX, stdin);
    printf("Please input the second string:");
    fgets(str2, MAX, stdin);
    int i = 0;
    while (*target1++ != '0')
    {
      i++;
    }
    char str;
    char* target3 = str;
    int n;
    for (
         n = 0; n < i; n++)
    {
      *target3++ = *target1++;
    }
    for (;;)
    {
      if(*target2++ != '0'){*(target3 + n-2) = *target2++;}
    }
    printf("the sentence is:%s", str);
    return 0;
}

jackz007 发表于 2020-11-10 22:56:42

本帖最后由 jackz007 于 2020-11-10 22:58 编辑

#include <stdio.h>

#define MAX 1024

int main()
{
    char str1 , str2 , str3      ;
    int i , j , m                                     ;
    printf("Please input the first string : ")      ;
    fgets(str1 , MAX , stdin)                         ;
    for(m = 0 ; str1 ; m ++)                     ;
    str1 = '\0'                              ;
    printf("Please input the second string : ")       ;
    fgets(str2 , MAX , stdin)                         ;
    for(m = 0 ; str2 ; m ++)                     ;
    str2 = '\0'                              ;
    for(i = 0 ; str1 ; i ++) str3 = str1   ;
    for(j = 0 ; str2 ; j ++) str3 = str2 ;
    str3 = '\0'                              ;
    printf("the sentence is:%s\n" , str3)             ;
}

shooan 发表于 2020-11-11 12:05:43

题主,已经帮你重写了一下,因为原来的代码有点混乱。
不过有一个问题因为 fget会读入回车键,所以会出现换行,不过已经实现了两个字符串合并了。

运行示例:
https://i.bmp.ovh/imgs/2020/11/04ffafe0a158294e.png

#include <stdio.h>
#define MAX 1024

int main()
{
    char str1;
    char str2;
    char* target1 = str1;
    char* target2 = str2;
    printf("Please input the first string:");
    fgets(str1, MAX, stdin);
    printf("Please input the second string:");
    fgets(str2, MAX, stdin);
   
    char str;
    char* target3 = str;
   
    while (*target3++=*target1++);
        target3--;        // 回退一个 现在target3 已经到了 第一个字符串结尾的下一个位置了。所以,这里回退到 '0' 位置
        while (*target3++=*target2++);
   
    printf("the sentence is:%s", str);
    return 0;
}

宅在家 发表于 2020-11-11 21:51:15

shooan 发表于 2020-11-11 12:05
题主,已经帮你重写了一下,因为原来的代码有点混乱。
不过有一个问题因为 fget会读入回车键,所以会出现 ...

谢啦~一开始我想用getchar把换行读了,后面发现不行{:10_266:}
页: [1]
查看完整版本: 小白求助