gandixiwang 发表于 2022-7-3 18:06:38

求助!

#include <stdio.h>

#define MAX 1024

int main()
{
        char str1,str2;
        char *target1 = str1,*target2=str2;
        char cum;
        int ch;
       
        printf("请输入一个字符串到str1:");
        fgets(str1, MAX, stdin);
       
        printf("请输入需要拷贝的字符数量:");
        scanf("%d",&ch);
       
        printf("开始拷贝 str1 的内容到 str2 中...\n");
       
        while(cum=*target1 && (*target2++ = *target1++)!='\0' && ch>0)
        {
                ch--;
                if((int)cum<0)
                {
                        *target2++ = *target1++;
                }
        }
       
        printf("拷贝完毕!\n现在str2中的内容是:%s",str2);
       
        return 0;
}

结果是错的
但是怎么想都不知道代码哪里有问题。。

jhq999 发表于 2022-7-3 19:13:02

while( ch>0&&(cum=*target2++ = *target1++)!='\0' )
      {
                ch--;
                if(cum<0)
                {
                        *target2++ = *target1++;
                }
      }
      if(*target2)*target2='\0';

gandixiwang 发表于 2022-7-4 12:16:39

jhq999 发表于 2022-7-3 19:13


为什么while( ch>0&&(cum=*target2++ = *target1++)!='\0' )就可以,而while(cum=*target1 && (*target2++ = *target1++)!='\0' && ch>0)就不行?

jhq999 发表于 2022-7-4 18:17:44

gandixiwang 发表于 2022-7-4 12:16
为什么while( ch>0&&(cum=*target2++ = *target1++)!='\0' )就可以,而while(cum=*target1 && (*target2+ ...

了解一下逻辑短路
页: [1]
查看完整版本: 求助!