char Comm[64];
Comm[0]="1"
Comm[1]=","
Comm[2]="2"
Comm[3]=","
....
还有一数组Temp
char temp
temp[0]="1"
temp[1]="2"
也就是将Comm数组里的凡是有“,”的去掉,然后赋值给temp,转换函数我这样写的:
Convert(CHAR* OldCharArray, CHAR* NewCharArray, CString Separater)
{
int i=0;
for (;i<strlen(OldCharArray);i++)
{
if (OldCharArray[i]!=Separater)
{
NewCharArray[i]=OldCharArray[i];
}
else
{
NewCharArray[i]=OldCharArray[i+1];
i=i+1;
}
}
}
调用时如下:
CHAR *temp;
Convert(Comm,temp,",");
可是为什么一执行就会产生错误报告呢!所以请大家解释一下,Char* x 、 Char *x、Char x,还有CCHAR 定义的变量的区别,
14 个解决方案
#1
char Comm[64];
Comm[0]="1"
Comm[1]=","
Comm[2]="2"
Comm[3]=","
....
还有一数组Temp
char temp
temp[0]="1"
temp[1]="2"
//这些因为是字符数组 Comm[0]='1'要用单引号
#2
还有char temp[20]和char temp有区别吗?
#3
这是我打字出来的错误!呵呵程序里赋值应该是不会错的!
#4
char temp[20]字符数组,包含20个字符
char temp 字符类型,就一个字符
lz该看一些基本的c/c++的书籍了
#5
char* x 和char *x是一样的表示指向字符的指针,char x是字符变量喽,CCHAR我还没见过。。。
char* x方式声明的数组定义后是不允许修改的,所以会报错。
char* x方式声明的数组定义后是不允许修改的,所以会报错。
#6
Convert(CHAR* OldCharArray, CHAR* NewCharArray, CString Separater)
{
int i=0;
int j=0;
for (;i <strlen(OldCharArray);i++)
{
if (OldCharArray[i]!=Separater)
{
NewCharArray[j++]=OldCharArray[i];
}
}
}
#7
char *a跟 char* a没有任何区别,不过最好用第二种方式,不然在声明多个时可能会产生误解!
如:char* a,b;
char *a,b;
上面的容易误认为a跟b是一样的 !
如:char* a,b;
char *a,b;
上面的容易误认为a跟b是一样的 !
#8
嘿嘿!CCHAR可以是我装了那个Visual Actix的原因吧!是个VC++辅助工具。老出问题,郁闷呀!是该好好看看书了!
#9
你定义的CHAR* TEMP只是定义了一个指针,没有赋给它值,也就是说指针指向哪里是不知道的。这个时候传到函数里做:
NewCharArray[i]=OldCharArray[i];
就会错。
要给它开一块内存用来存内容,比如char TEMP[20];,或者char* TEMP = malloc(sizeof(char)*20);
NewCharArray[i]=OldCharArray[i];
就会错。
要给它开一块内存用来存内容,比如char TEMP[20];,或者char* TEMP = malloc(sizeof(char)*20);
#10
CHAR *temp指向哪里?就给它赋值啦
#11
char* x和char *x都是表示字符指针变量,给各长度就相当于是字符串
char x是字符变量
初学者经常犯的一个错误就是,认为定义了指针变量就会自动给他分配空间,实则不是这样
定义char x会自动分配空间给x,但是char* x是不会的,需要手动分配
可以这样分配
分配之后最好要初始化
用new分配的空间在使用完之后要手动删除,不然会出问题的
当然,你也可以简单的用
这里的temp也是字符指针
char x是字符变量
初学者经常犯的一个错误就是,认为定义了指针变量就会自动给他分配空间,实则不是这样
定义char x会自动分配空间给x,但是char* x是不会的,需要手动分配
可以这样分配
char * temp=new char[20];
分配之后最好要初始化
char * temp=new char[20];
memset(temp,0,20);
用new分配的空间在使用完之后要手动删除,不然会出问题的
char * temp=new char[20];
memset(temp,0,20);
.
.
.
delete []temp;
当然,你也可以简单的用
char temp[20]={0};
这里的temp也是字符指针
#12
用两个下标,一个i,一个j,分别指向OldCharArray和NewCharArray;
#13
mark
#14
这只能过滤到有规律的“,”
对于不规律的没有办法,发现不能实现的我的功能,所以我重写了,不是用Char,
代码如下:
void CJBSZ::Convert(CHAR* OldCharArray,CString NewStrArray[128],CString Separater)
{
int i=0;
int j=0;
CString temp;
for (;i<strlen(OldCharArray);i++)
{
temp=temp+OldCharArray[i];
if (OldCharArray[i]==Separater)
{
temp=temp.Left(temp.GetLength()-1);
j=j+1;
NewStrArray[j]=temp;
temp="";
}
if (OldCharArray[i]!=Separater)
{
NewStrArray[j]=temp;
}
}
#1
char Comm[64];
Comm[0]="1"
Comm[1]=","
Comm[2]="2"
Comm[3]=","
....
还有一数组Temp
char temp
temp[0]="1"
temp[1]="2"
//这些因为是字符数组 Comm[0]='1'要用单引号
#2
还有char temp[20]和char temp有区别吗?
#3
这是我打字出来的错误!呵呵程序里赋值应该是不会错的!
#4
char temp[20]字符数组,包含20个字符
char temp 字符类型,就一个字符
lz该看一些基本的c/c++的书籍了
#5
char* x 和char *x是一样的表示指向字符的指针,char x是字符变量喽,CCHAR我还没见过。。。
char* x方式声明的数组定义后是不允许修改的,所以会报错。
char* x方式声明的数组定义后是不允许修改的,所以会报错。
#6
Convert(CHAR* OldCharArray, CHAR* NewCharArray, CString Separater)
{
int i=0;
int j=0;
for (;i <strlen(OldCharArray);i++)
{
if (OldCharArray[i]!=Separater)
{
NewCharArray[j++]=OldCharArray[i];
}
}
}
#7
char *a跟 char* a没有任何区别,不过最好用第二种方式,不然在声明多个时可能会产生误解!
如:char* a,b;
char *a,b;
上面的容易误认为a跟b是一样的 !
如:char* a,b;
char *a,b;
上面的容易误认为a跟b是一样的 !
#8
嘿嘿!CCHAR可以是我装了那个Visual Actix的原因吧!是个VC++辅助工具。老出问题,郁闷呀!是该好好看看书了!
#9
你定义的CHAR* TEMP只是定义了一个指针,没有赋给它值,也就是说指针指向哪里是不知道的。这个时候传到函数里做:
NewCharArray[i]=OldCharArray[i];
就会错。
要给它开一块内存用来存内容,比如char TEMP[20];,或者char* TEMP = malloc(sizeof(char)*20);
NewCharArray[i]=OldCharArray[i];
就会错。
要给它开一块内存用来存内容,比如char TEMP[20];,或者char* TEMP = malloc(sizeof(char)*20);
#10
CHAR *temp指向哪里?就给它赋值啦
#11
char* x和char *x都是表示字符指针变量,给各长度就相当于是字符串
char x是字符变量
初学者经常犯的一个错误就是,认为定义了指针变量就会自动给他分配空间,实则不是这样
定义char x会自动分配空间给x,但是char* x是不会的,需要手动分配
可以这样分配
分配之后最好要初始化
用new分配的空间在使用完之后要手动删除,不然会出问题的
当然,你也可以简单的用
这里的temp也是字符指针
char x是字符变量
初学者经常犯的一个错误就是,认为定义了指针变量就会自动给他分配空间,实则不是这样
定义char x会自动分配空间给x,但是char* x是不会的,需要手动分配
可以这样分配
char * temp=new char[20];
分配之后最好要初始化
char * temp=new char[20];
memset(temp,0,20);
用new分配的空间在使用完之后要手动删除,不然会出问题的
char * temp=new char[20];
memset(temp,0,20);
.
.
.
delete []temp;
当然,你也可以简单的用
char temp[20]={0};
这里的temp也是字符指针
#12
用两个下标,一个i,一个j,分别指向OldCharArray和NewCharArray;
#13
mark
#14
这只能过滤到有规律的“,”
对于不规律的没有办法,发现不能实现的我的功能,所以我重写了,不是用Char,
代码如下:
void CJBSZ::Convert(CHAR* OldCharArray,CString NewStrArray[128],CString Separater)
{
int i=0;
int j=0;
CString temp;
for (;i<strlen(OldCharArray);i++)
{
temp=temp+OldCharArray[i];
if (OldCharArray[i]==Separater)
{
temp=temp.Left(temp.GetLength()-1);
j=j+1;
NewStrArray[j]=temp;
temp="";
}
if (OldCharArray[i]!=Separater)
{
NewStrArray[j]=temp;
}
}