📄 clib.pas
字号:
Unit CLIB;
Interface
function calloc(size,count:word):pointer;
function fopen(fn,mode:string):integer;
function fgets(p:pchar; max,fd:integer):pchar;
function fgetc(fd:integer):char;
procedure fputc(c:char; fd:integer);
procedure fputs(p:pchar; fd:integer);
procedure fclose(fd:integer);
function isalpha(c:char):boolean;
function isdigit(c:char):boolean;
procedure abort(code:integer);
procedure poll(i:integer);
Implementation
function calloc(size,count:word):pointer;
var
p:pointer;
begin
getmem(p,size*count);
calloc:=p;
end;
var
pasfiles:array[0..2] of record
handle:text;
line :string;
opened:boolean;
end; (* input, input2 & output *)
function fopen(fn,mode:string):integer;
var
i:integer;
begin
i:=low(pasfiles);
while pasfiles[i].opened do begin
if i=high(pasfiles) then halt;
inc(i);
end;
with pasfiles[i] do begin
assign(handle,fn);
if mode='r' then reset(handle) else
if mode='w' then rewrite(handle) else halt;
opened:=true;
end;
fopen:=i;
end;
function fgets(p:pchar; max,fd:integer):pchar;
begin
with pasfiles[fd] do begin
readln(handle,line);
if max>length(line) then max:=length(line);
move(line[1],p^,max);
end;
fgets:=p;
end;
function fgetc(fd:integer):char;
var
c:char;
begin
with pasfiles[fd] do begin
read(handle,c);
end;
fgetc:=c;
end;
procedure fputc(c:char; fd:integer);
begin
with pasfiles[fd] do write(handle,c);
end;
procedure fputs(p:pchar; fd:integer);
begin
while p^<>#0 do begin
fputc(p^,fd);
inc(p);
end;
end;
procedure fclose(fd:integer);
begin
with pasfiles[fd] do begin
close(handle);
opened:=false;
end;
end;
function isalpha(c:char):boolean;
begin
isalpha:=c in ['a'..'z','A'..'Z'];
end;
function isdigit(c:char):boolean;
begin
isdigit:=c in ['0'..'9'];
end;
procedure abort(code:integer);
begin
halt(code);
end;
procedure poll(i:integer);
begin
end;
begin
fillchar(pasfiles,sizeof(pasfiles),0);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -