黑眼睛 发表于 2020-10-21 10:50:55

请问大家,第一次循环的时候,是不是只取*target2指针的值而不自增?而*target1++...

#include <stdio.h>

#define MAX 1024

int main()
{
      char str1; // 确保连接后不越界
      char str2;

      char *target1 = str1;
      char *target2 = str2;

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

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

      // 将指针指向 str1 的末尾处
      while (*target1++ != '\0')
                ;

      // 我们希望 str1 最后边的 '\0' 和 '\n' 都被覆盖掉
      target1 -= 2;

      // 连接字符串
      while ((*target1++ = *target2++) != '\0') // (*target1++ = *target2++) ??? 第一次循环的时候,是不是只取*target2指针的值而不自增?而*target1++却取自增后的指针指向的值?
                ;

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

      return 0;
}

xieglt 发表于 2020-10-21 11:54:06

都自增

黑眼睛 发表于 2020-10-21 12:27:09

xieglt 发表于 2020-10-21 11:54
都自增

都自增的话*target2++不就指向str第二个字符了吗

xieglt 发表于 2020-10-21 13:32:46

黑眼睛 发表于 2020-10-21 12:27
都自增的话*target2++不就指向str第二个字符了吗

先执行 *target1 = * target2;
再判断 *target1 != '\0'
最后 执行 target1++ 和 target2++
页: [1]
查看完整版本: 请问大家,第一次循环的时候,是不是只取*target2指针的值而不自增?而*target1++...