鱼C论坛

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

萌新求大佬帮助

[复制链接]
发表于 2019-4-18 08:40:55 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

#define MAX 1024

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

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

        char ch;
        int n;

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

        printf("请输入需要拷贝的字符个数:");
        scanf("%d", &n);

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

        *target2 = '\0';

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

        return 0;
}
问题一:ch = *target2++ = *target1++;这句话的意思是不是1目标传给目标2,1目标自加;2目标再传给ch,并且2目标再自加??。
问题二:    if ((int)ch < 0)
               {
                       *target2++ = *target1++;
                       *target2++ = *target1++;
               }
if循环内的语句我用堆栈的思想怎么弄都觉的还少一条  *target2++ = *target1++;,请问为什么不对呀,我卡在这个地方了,我也想过栈的思想,但是也不对,如下图: BAA08C13-3FB3-40E6-83F8-4827D162B0AC.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-18 09:28:07 | 显示全部楼层
本帖最后由 jackz007 于 2019-4-18 10:16 编辑

    1、就是这个意思,你的理解是完全正确的。

    2、关于一个汉字几个字节的问题与具体编码有关,比如,在 Windows 系统上,汉字一般采用 ANSI 和 unicode 编码,每个汉字占用 2 个字节,占用 3 个字节的是 utf-8 编码,是 Linux 系统采用汉字编码的标准,这种编码的汉字如不转码,在 Windows 系统会显示成乱码。

         其实,只要不是 unicode 编码,字符串拷贝,用下面的 2 行代码足矣:
for(i = 0 ; * target1 && i < n ; i ++) * target2 ++ = * target1 ++ ;
* target2 = '\0'                                                   ;

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
一个小蚂蚁 + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-18 09:51:12 | 显示全部楼层
jackz007 发表于 2019-4-18 09:28
1、就是这个意思,你的理解是完全正确的。

    2、关于一个汉字几个字节的问题与具体编码有关,比如 ...

哦哦,谢谢大佬,我知道了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 18:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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