Nisy 发表于 2009-6-25 00:03:58

视频十三的思考题

思考一下这个问题

申请10个字节的空间

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

即再次打印的时候 将显示“ChinaPYG”

Luckly 发表于 2009-6-25 01:17:09

void main()
{
       
        char teststring={'c','h','i','n','p','y','g',0};

        char temp={0};

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

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

        printf("%s\n",teststring);
   
}

lqiulu 发表于 2009-6-25 12:22:26

#include "stdio.h"
main()
{
    char temp;
    char * p;
    int i;
    p=temp;
    memcpy(temp,"ChinPYG",sizeof"ChinPYG");
    puts(temp);
    for(i = 9;i >= 5;i--)
    {
       *(p+i) = temp;
    }
    *(p + 4) = 'a';
    puts(p);
}

qifeon 发表于 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 编辑 ]

lmy 发表于 2009-6-25 18:07:19

#include "iostream.h"
#include "string.h"
#include "stdlib.h"

main()
{
        char *p=new char;
        memcpy(p,"ChinPYG",sizeof("ChinPYG"));
        *((int *)(p+5))=*((int *)p+1);
        *(p+4)='a';
        cout<<p<<endl;
        delete[] p;
}

sun50 发表于 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);
}

sdprtf 发表于 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);
}

wr123 发表于 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;
    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);
}

Nisy 发表于 2009-6-26 07:37:00

主要是思路上 大家要思考一下

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

大家可以写成子程序试一下

冬天的雷雨 发表于 2009-6-26 07:59:48

小弟向各位老兄学习
页: [1] 2
查看完整版本: 视频十三的思考题