原本写了一个函数,用于去掉字符串中的空格
void CMy21EnAIDlg::Onencyai()
{
CString strEncryptionData;
m_txt_EncryptionData.GetWindowText(strEncryptionData);
char Enddata[128]={0};
char Endata[128]={0};
int index = 0;
char temp;
int idata=0;
if( strEncryptionData.IsEmpty())
{
AfxMessageBox("SN和秘钥为空,请重新输入");
return ;
}
char* c;
c=strEncryptionData.GetBuffer(strEncryptionData.GetLength());
int length=strEncryptionData.GetLength();
fun.CStringDelBlank(c,length);
strEncryptionData=c;
//Endata=c;
strcpy(Endata , c);
}
void CPublicFunction::CStringDelBlank(char *strEncryptionData,int length)
{
int idata = 0;
char temp;
char Enddata[128]={0};
// int length=strEncryptionData.GetLength();
for(int i=0;i<length;i++)
{
if(strEncryptionData[i]==' ')
{
continue;
}
else
{
Enddata[idata]=strEncryptionData[i];
idata++;
}
}
//strEncryptionData="";
//strEncryptionData=Enddata;
memcpy(strEncryptionData,Enddata,strlen(Enddata)+1);
}
发现并不能改变数组的值,原因是两个数组的地址不一样。=等号只是传地址,而memcpy是将要改变字符串的整个空间值全都改变了
#include<stdio.h>
void m(char *a)
{
printf("%p\n",&a);
}
void main()
{
// TODO: Add your control notification handler code here
//char b[]={0,1,2,3,5,6,85,5};
char b[]="{0,1,2,3,5,6,85,5}";
char *s=b;
printf("%p\n",&s);
printf("%p\n",b);
m(s);
system ("pause");
}