huangguohao11 发表于 2021-6-26 11:38:26

求助S1E22 第二题

/* Note:Your choice is C IDE */
#include "stdio.h"
#define MAX 1024
void main()
{
char str1;
char str2;
char *target1=str1;
char *target2=str2;

printf("请输入第一个字符串:");


fgets(str1,MAX,stdin);

printf("请输入第二个字符串:");

fgets(str2,MAX,stdin);

if(*target1!='\n')
{
    *target1++;       
}   

   target1 -= 2;// 地址上去除;
   
   if(*target1!='\0')
   {
           *target1++ = *target2++;
   }


printf("连接后的结果是:%s",str1);
}


连接字符串连接不上

huangguohao11 发表于 2021-6-26 11:52:04

我重新写了下代码 还是不行

/* Note:Your choice is C IDE */
#include "stdio.h"
#define MAX 1024
void main()
{
char str1;
char str2;
char *target1=str1;
char *target2=str2;

printf("请输入第一个字符串:");


fgets(str1,MAX,stdin);

printf("请输入第二个字符串:");

fgets(str2,MAX,stdin);

while(*target1!='\0')
{
    *target1++;       
}   

   target1 -= 2;// 地址上去除;
   
   while(*target1!='\0')
   {
           *target1++ = *target2++;
   }


printf("连接后的结果是:%s",str1);
}

qiuyouzhi 发表于 2021-6-26 11:56:52

你的target1都到末尾了,还怎么++?

huangguohao11 发表于 2021-6-26 22:23:56

qiuyouzhi 发表于 2021-6-26 11:56
你的target1都到末尾了,还怎么++?

那应该怎么写?target1-=2不是把/0 /N 的地址去掉了吗?

qiuyouzhi 发表于 2021-6-26 22:28:17

huangguohao11 发表于 2021-6-26 22:23
那应该怎么写?target1-=2不是把/0 /N 的地址去掉了吗?

你可以再搞一个字符数组存放结果

帅周 发表于 2021-6-26 22:38:40

strcat

帅周 发表于 2021-6-26 22:39:40

本帖最后由 帅周 于 2021-6-26 23:09 编辑

666

帅周 发表于 2021-6-26 23:08:14

本帖最后由 帅周 于 2021-6-26 23:20 编辑

#include<stdio.h>

int main(void)
{
        char str1;
        char str2;
        char *p1 = str1;
        char *p2 = str2;

        printf("请输入第一个字符串:");
        fgets(str1,1024,stdin);

        printf("请输入第二个字符串:");
        fgets(str2,1024,stdin);

        while (*p1 != '\0')
        {
                p1 += 1;
        }

        p1--;

        while (*p2 != '\0')
        {
                *p1 = *p2;
                p2++;
                p1++;
        }

        printf("%s",str1);

        return 0;
}


这样写
*p1++ = *p2++
p1不变,*优先级比++高,没有意义
要改为
*p1 = *p2;
p1++;
p2++;
页: [1]
查看完整版本: 求助S1E22 第二题