文字列のコピー

明解C言語 入門編 > 11. 文字列とポインタ >

文字列のコピー

Delphi


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

function str_cpy(d:PChar; s:PChar):PChar;
begin
result := d;

repeat
d^ := s^;
Inc(s);
Inc(d);
until (s^ = #0);

d^ := s^; { \0 も COPY }
end;

procedure main();
const
st1: String = '12345';
st2: String = 'ABC';

pt1: array[0..255] of Char = '12345';
pt2: array[0..255] of Char = 'ABC';
var
i: Integer;
begin
Writeln(Format('st1 = %s', [st1]));
Writeln(Format('st2 = %s', [st2]));
Writeln('');

st1 := st2;
Writeln(Format('st1 = %s', [st1]));
Writeln(Format('st2 = %s', [st2]));
Writeln('');


Writeln(Format('pt1 = %s', [pt1]));
Writeln(Format('pt2 = %s', [pt2]));
Writeln('');

str_cpy(pt1, pt2);
write('pt1 = ');
for i := 0 to 4 do
if pt1[i] = #0 then
write(' ')
else
write(pt1[i]);
Writeln('');
Writeln(Format('pt2 = %s', [pt2]));
Writeln('');


pt1 := '12345';
Writeln(Format('pt1 = %s', [pt1]));
Writeln(Format('pt2 = %s', [pt2]));
Writeln('');

StrCopy(pt1, pt2);
write('pt1 = ');
for i := 0 to 4 do
if pt1[i] = #0 then
write(' ')
else
write(pt1[i]);
Writeln('');
Writeln(Format('pt2 = %s', [pt2]));
Writeln('');
end;

begin
main;
end.

実行結果

S:\>lesson085\project1.exe
st1 = 12345
st2 = ABC

st1 = ABC
st2 = ABC

pt1 = 12345
pt2 = ABC

pt1 = ABC 5
pt2 = ABC

pt1 = 12345
pt2 = ABC

pt1 = ABC 5
pt2 = ABC