数据类型转换的问题 ( 积分: 15 )

  • 主题发起人 主题发起人 delphixyz
  • 开始时间 开始时间
D

delphixyz

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个问题,我想把字符串里的数据转移到字符数组里
var
des:array[0..9] of char;
str:string;
begin
str:='1234567890';
strcopy(des,pchar(str));
end;
目的就是把'1234567890'转移到list中,list就成了'1','2','3',....'0'
这段代码总是抱错,估计是我概念不清
谁能帮帮忙解决

 
有一个问题,我想把字符串里的数据转移到字符数组里
var
des:array[0..9] of char;
str:string;
begin
str:='1234567890';
strcopy(des,pchar(str));
end;
目的就是把'1234567890'转移到list中,list就成了'1','2','3',....'0'
这段代码总是抱错,估计是我概念不清
谁能帮帮忙解决

 
var
s:array[0..9] of char;
begin
strlcopy(s,'fsfdfdsfd',sizeof(s));
end;
 
我试了没有报错啊
 
to wufongming:
你的例子只转换了9个字符长度的字符串,转换10个仍然要抱错
 
我看了strcopy的解释,出错的原因是des分配的空间不够,问题是我只能给它10个char的空间,源的长度也是不会大于10的(我控制),怎么办
 
Use StrCopy to copy Source to Dest. StrCopy returns Dest.

StrCpy does not perform any length checking. The destination buffer must have room for at least StrLen(Source)+1 characters.

For length checking, use the StrLCopy function.
目的区域的大小不小于Length(source)+1 个字符
 
var
str:string;
begin
str:='1234567890';
end;
其中,str[1]='1',str[2]='2'...str[10]='0',自符串本身就是of Char 数组,用不着再转移了!
 
同意jwei119
方式一:直接用字符串的功能,即如楼上的str[1]='1',str[2]='2'...str[10]='0'。
方式二:如果一定要转移到其他字符串数据组中,可以用以下方式:
var
des:array[0..9] of char;
str:string;
begin
str:='1234567890';
strLcopy(des,pchar(str),10);
end;
说明:strcopy进行字符拷贝时,其按/0结束。当str长度小于10个时正确,超过10个时就出错。strLcopy进行字符拷贝时,进行长度检测。一旦str中字符超过10个时,最多只复制10个,这样子就不会出错了。
  
 
内存溢出了,非常危险,
长度为10的C字符串需要11个字节的空间
 
后退
顶部