用这一段试试
char * pSource = ....; //指向source的指针
cahr * pResult = ....; //指向result的指针,自已填吧
while (* pSource)
{
if ( *(WORD *)pSource == '\\\\')
{
* pResult++ = '\';
pSource +=2;
}
else
* pResult++ = * pSource++;
}
* pResult = NULL;
char * pSource = ....; //指向source的指针
cahr * pResult = ....; //指向result的指针,自已填吧
while (* pSource)
{
if ( *(WORD *)pSource == '\\\\')
{
* pResult++ = '\';
pSource +=2;
}
else
* pResult++ = * pSource++;
}
* pResult = NULL;
以16进制表示:
source = 0x5c 0x30 0x33 0x33 0x41 0x42 0x43 0x44 0x5c 0x77 0x31 0x32
result = 0x1b 0x41 0x42 0x43 0x44 0x12也就是说,如以下:
memcpy(result,"\033ABCD\x12",5);
这样的话,结果是上述结果。现在我想把第二个参数从文本文件中取出,文本文件中以gets的形式。可是,取出后如何转换为以上格式呢?
char source[] = "\\033ABCD\\x12";
char result[] = "\033ABCD\x12"; char tmp[100];
char t1[4];
int cur=0;
int t=0;
int len=(int)strlen(source); memset(t1,'\0',4);
for(int i=0;i<=len-1; )
{
if(source[i]=='\\' && source[i+1]=='0')
{
memset(t1,'\0',4);
strncpy(t1,&source[i+1],3);
sscanf(t1,"%i",&t);
tmp[cur++]=t;
i=i+4;
}
else if(source[i]=='\\' && source[i+1]=='x')
{
memset(t1,'\0',4);
strncpy(t1,&source[i+2],2);
sscanf(t1,"%x",&t);
tmp[cur++]=t;
i=i+3;
}
else
{
tmp[cur++]=source[i++];
}
if(i==len-1)
break; }
我一直在想用sprintf 或者用 vsprintf类似的函数来完成呢。