仿古砖用什么拖把:一段c的程序

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/06 17:20:41
把一个字符串的第36个字符以后的字符拷贝到另一个串中
#include <stdio.h>
#include<iostream.h>
#include<string.h>
//search for key
void JudgeKey(const char * cPstr,char * dPstr)
{
;
int i=36;
int k=0;

for(;i<39;i++)
{
dPstr[k]=cPstr[i];
k++;
}

}
void main( void )
{
char * dPstr;
char p[]="2006/07/26 13:28 0 a.txt";
dPstr=new char(strlen(p));
if(dPstr==NULL)
{printf("failed");
exit(0);
}
JudgeKey(p,dPstr);
cout<<p<<endl;
cout<<dPstr<<endl;

delete dPstr;

}
不是那个问题,我复制时有错误
2006/07/26 13:28这中间有空格0 a.txt
36就是a.txt前的字符数

你的dPstr只分配了strlen(p)长的空间,在这个程序中是24,而执行dPstr[k]=cPstr[i]; i至少为36了,当然出错了。

把一个字符串的第36个字符以后的字符拷贝到另一个串中 :
#include <stdio.h>
void main(int argc, char *argv[])
{
#define OFFSET_NUM 36
char *sstr, *dstr;
int new_str_len = 0;
int i;

printf("the old str is :");
scanf("%s", sstr);
if (strlen(sstr) < OFFSET_NUM)
{
printf("the source string is too small! \n");
}

new_str_len = strlen(sstr) + 1 - OFFSET_NUM;
dstr = (char *)malloc(new_str_len);

for (i=0; i<OFFSET_NUM; i++)
{
sstr ++;
}

strcpy(dstr, sstr);
printf("the new str is :%s \n", dstr);

free(dstr);
return;
}