鱼C论坛

 找回密码
 立即注册
查看: 761|回复: 2

[已解决]S1E22课后题动动手1

[复制链接]
匿名鱼油
匿名鱼油  发表于 2021-8-7 15:14:12 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

#define MAX 1024

int main()
{
        char str1[MAX];
        char str2[MAX];

        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;
}
最佳答案
2021-8-7 16:06:20
你这样设置ch没啥用
  1. while (count--)  
  2.     {  
  3.         *target2++ = *target2++;  
  4.     }  
复制代码


当然了 你还要考虑count是否大于strlen(target1)
以及如何结尾
回复

使用道具 举报

发表于 2021-8-7 15:42:04 | 显示全部楼层
for 循环里
ch = *target1++;
此时 *target1 已经指向字符串的第二个字符了
然后你又
*target2++ = *target1++;
这是将原字符串的第二个字符赋值给 str2 的第一个字符,这能行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-7 16:06:20 | 显示全部楼层    本楼为最佳答案   
你这样设置ch没啥用
  1. while (count--)  
  2.     {  
  3.         *target2++ = *target2++;  
  4.     }  
复制代码


当然了 你还要考虑count是否大于strlen(target1)
以及如何结尾
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 21:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表