program Prog1;
uses Crt;
procedure StrCpyCh(var dest: string; src: string; delim: char);
var
i: integer;
begin
i := 1;
while (i <= Length(src)) and (src <> delim) do
Inc(i);
Inc(i);
while (i <= Length(src)) and (src <> delim) do
begin
dest := dest + src;
Inc(i);
end;
end;
var
s: string;
begin
StrCpyCh(s, 'Today day dark: animals - sheep, cat, tiger: fox !', ':');
WriteLn(s);
end.
перевести с си на паскаль..
char* ch_strcpy(char* dst, const char* src, char ch) {
char* iter = dst;
while( *src ) {
if( *src++ == ch )
break;
}
while( *src != '\0' && *src != ch) {
*iter = *src++;
++iter;
}
*iter = '\0';
return dst;
}
int main(void)
{
char str[128];
ch_strcpy(str, "Today day dark: animals - sheep, cat, tiger: fox !", ':');
puts(str);
getchar();
return 0;
}
Код:
Вариант 2. "Литературный перевод".
Код:
program Prog2;
uses Crt;
procedure StrCpyCh(var dest: string; src: string; delim: char);
var
p: integer;
temp: string;
begin
p := Pos(delim, src);
if p = 0 then dest := src else
begin
temp := Copy(src, p+1, Length(src)-p);
p := Pos(delim, temp);
if p = 0 then dest := temp else dest := Copy(temp, 1, p-1);
end;
end;
var
s: string;
begin
ClrScr;
StrCpyCh(s, 'Today day dark: animals - sheep, cat, tiger: fox !', ':');
WriteLn(s);
ReadLn;
end.
uses Crt;
procedure StrCpyCh(var dest: string; src: string; delim: char);
var
p: integer;
temp: string;
begin
p := Pos(delim, src);
if p = 0 then dest := src else
begin
temp := Copy(src, p+1, Length(src)-p);
p := Pos(delim, temp);
if p = 0 then dest := temp else dest := Copy(temp, 1, p-1);
end;
end;
var
s: string;
begin
ClrScr;
StrCpyCh(s, 'Today day dark: animals - sheep, cat, tiger: fox !', ':');
WriteLn(s);
ReadLn;
end.
на экран выводится "Today day dark" а должно "animals - sheep, cat, tiger"
Подправил. :) Невнимательно исходный код прочитал.
теперь выводит "animals - sheep, cat, tiger: fox !"
Бррр, старею. :) Проверяйте.:)
спасибо огромное:)