文字列のコピー

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

文字列のコピー

C


#include <stdio.h>
#include <string.h>

char* str_cpy(char* d, const char* s)
{
char* t = d;

while (*d++ = *s++)
;

return t;
}

int main(int argc, char* argv[])
{
int i;
char* st1 = "12345";
char* st2 = "ABC";

printf("st1 = %s\n", st1);
printf("st2 = %s\n", st2);
puts("");

str_cpy(st1, st2);
printf("st1 = ");
for (i = 0; i < 5; i++)
if (st1[i] == '\0')
putchar(' ');
else
putchar(st1[i]);
putchar('\n');
printf("st2 = %s\n", st2);
puts("");

st1 = "12345";
strcpy(st1, st2);
printf("st1 = ");
for (i = 0; i < 5; i++)
if (st1[i] == '\0')
putchar(' ');
else
putchar(st1[i]);
putchar('\n');
printf("st2 = %s\n", st2);
puts("");

return 0;
}

実行結果


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

st1 = ABC 5
st2 = ABC

st1 = ABC 5
st2 = ABC

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