Anonymous 发表于 2021-8-7 15:14:12

S1E22课后题动动手1

为什么达不到strncpy的功能
#include <stdio.h>

#define MAX 1024

int main()
{
      char str1;
      char str2;

      char *target1 = str1;
      char *target2 = str2;
      
      char ch;
      int count,i=0;

      printf("请输入一个字符串到 str1 中:");
      fgets(str1, MAX, stdin);
      
      printf("请输入需要拷贝的字符个数:");
      scanf("%d",&count) ;

      printf("开始拷贝 str1 的内容到 str2 中...\n");
      for (i=0;i<count;i++)
      {
              ch=*target1++;
                       
                        *target2++=*target1++;
                       
                        if(ch=='\0')
                        {
                                break;
                        }
                       
                        if((int)ch<0)
                        {
                                *target2++=*target1++;
                        }
                       
                }
               
                *target2++='\0';
      

      printf("拷贝完毕!");
      printf("现在,str2 中的内容是:%s\n", str2);

      return 0;
}

Max472 发表于 2021-8-7 15:42:04

for 循环里
ch = *target1++;
此时 *target1 已经指向字符串的第二个字符了
然后你又
*target2++ = *target1++;
这是将原字符串的第二个字符赋值给 str2 的第一个字符,这能行吗?

万千只cnm 发表于 2021-8-7 16:06:20

你这样设置ch没啥用
while (count--)
    {
      *target2++ = *target2++;
    }

当然了 你还要考虑count是否大于strlen(target1)
以及如何结尾
页: [1]
查看完整版本: S1E22课后题动动手1