视频十三的思考题
思考一下这个问题申请10个字节的空间
把“ChinPYG”这个字符串copy过去然后再把字符‘a’插入到第五个字符
即再次打印的时候 将显示“ChinaPYG” 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);
} #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);
}
简单写个不通用的,通用插入字符可以修改写个子程序。
#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 编辑 ] #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;
} #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);
} 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);
} 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);
} 主要是思路上 大家要思考一下
一个是插入字符 一个是删除字符
大家可以写成子程序试一下 小弟向各位老兄学习
页:
[1]
2