飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7044|回复: 13

[C/C++] 视频十三的思考题

[复制链接]

该用户从未签到

发表于 2009-6-25 00:03:58 | 显示全部楼层 |阅读模式
思考一下这个问题

申请10个字节的空间

把“ChinPYG”这个字符串copy过去  然后再把字符‘a’插入到第五个字符

即再次打印的时候 将显示“ChinaPYG”
PYG19周年生日快乐!

该用户从未签到

发表于 2009-6-25 01:17:09 | 显示全部楼层
void main()
{
       
        char teststring[10]={'c','h','i','n','p','y','g',0};

        char temp[10]={0};

        __asm
        {
                lea eax,teststring
        mov ecx,10
                lea edi,temp
                mov esi,eax
        rep movs byte ptr[edi],byte ptr[esi]

                add eax,4
                mov byte ptr[eax],'a'
                lea esi,temp
                add esi,4
                inc eax
                mov edi,eax
                mov ecx,3
                rep movs byte ptr[edi],byte ptr[esi]
        }

        printf("%s\n",teststring);
   
}
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-7-26 14:34
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2009-6-25 12:22:26 | 显示全部楼层
    #include "stdio.h"
    main()

    {
        char temp[10];
        char * p;
        int i;
        p=temp;
        memcpy(temp,"ChinPYG",sizeof"ChinPYG");
        puts(temp);
        for(i = 9;i >= 5;i--)
        {
           *(p+i) = temp[i-1];
        }
        *(p + 4) = 'a';
        puts(p);
    }
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-12-18 12:34
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2009-6-25 15:01:41 | 显示全部楼层
    简单写个不通用的,通用插入字符可以修改写个子程序。

    #include "stdio.h"
    #include "stdlib.h"
    #include "string.h"

    void main()
    {
      int i;      
      char * p=(char*)malloc(10);
      strcpy(p,"chinpyg");
      printf("%s\n",p);
      for(i=7;i>3;i--)
      *(p+i+1)=*(p+i);
      *(p+4)='a';
       printf("%s\n",p);
       free(p);
       
    }

    [ 本帖最后由 qifeon 于 2009-6-25 22:08 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-6-25 18:07:19 | 显示全部楼层
    #include "iostream.h"
    #include "string.h"
    #include "stdlib.h"

    main()
    {
            char *p=new char[10];
            memcpy(p,"ChinPYG",sizeof("ChinPYG"));
            *((int *)(p+5))=*((int *)p+1);
            *(p+4)='a';
            cout<<p<<endl;
            delete[] p;
    }
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-1-5 09:35
  • 签到天数: 881 天

    [LV.10]以坛为家III

    发表于 2009-6-25 19:28:01 | 显示全部楼层
    #include "stdio.h"
    main()
    {
        int i;
        char * p=(char*)malloc(10);
        memcpy(p,"ChinPYG",7);
        puts(p);

        for(i=8;i>4;i--)
        {
          *(p+i)=*(p+i-1);
        }
        *(p+4) = 'a';
        puts(p);
    }
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2017-9-24 22:49
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2009-6-25 22:51:40 | 显示全部楼层
    main()
    {
    int i;
    char *str = malloc(10);
    memcpy(str,"ChinPYG",sizeof("ChinPYG")+1);
    printf("%s\n",str);
    for(i = 8;i>4;i--)
      *(str+i) = *(str+i-1);
    *(str+i) = 'a';
    printf("%s\n",str);
    }
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    前天 12:41
  • 签到天数: 683 天

    [LV.9]以坛为家II

    发表于 2009-6-26 06:35:39 | 显示全部楼层
    void insert(char * p,int num,char a)
    {
        int i;
        for(i=strlen(p)+1;i>=num;i--)
        {
            *(p+i)=*(p+i-1);
        }
        *(p+num-1)=a;
    }

    main()
    {
        char p[10];
        char * str="chinPYG";
        memcpy(p,str,strlen(str)+1);
        printf("Befroe insert is:%s\n",p);
        insert(p,5,'a');
        printf("After insert is:%s\n",p);
    }
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2009-6-26 07:37:00 | 显示全部楼层
    主要是思路上 大家要思考一下

    一个是插入字符 一个是删除字符

    大家可以写成子程序试一下
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-6-26 07:59:48 | 显示全部楼层
    小弟向各位老兄学习
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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