- 在线时间
- 0 小时
- 最后登录
- 2007-9-23
- 注册时间
- 2004-9-10
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 9975 点
- 威望
- 7 点
- 阅读权限
- 150
- 积分
- 4048
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1893
- 主题
- 823
- 精华
- 2
- 分享
- 0
- 好友
- 0

我的地盘我做主
该用户从未签到
 |
< align=center><FONT color=#0000ff size=3><B><FONT color=#cc0000>函数大全(m开头)</FONT></B></FONT></P>& o4 I% R# t3 _4 M6 W# w
< align=left><FONT color=#ff0000>main()主函数. q0 p" {. ^- R
</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某 . k e9 E8 _8 @, a
个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放
% U# O: A" m5 l3 \在哪个地方, 以下几点说明都是适合的。
# y8 [6 Q9 G# r, `<FONT color=#000099>1. main() 参数 </FONT>
6 _: z! F) d4 Z; [在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。 ; v' K; [' B. Q2 d3 r
* argc: 整数, 为传给main()的命令行参数个数。 1 j- O* t7 A! Z" P9 O' H
* argv: 字符串数组。 $ Y5 ~! A8 J9 ^4 D0 W! y) t3 C* I0 f
在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0 Q6 m/ f- |) R- n
以下的版本, argv[0]为空串("") 。 # ~1 W# }7 g8 t' i+ i
argv[1] 为在DOS命令行中执行程序名后的第一个字符串;
' @* |- h6 w# t% O- uargv[2] 为执行程序名后的第二个字符串;
# e! \, ?( Y! ]3 o$ f G... 2 V$ d2 k6 X* Q# i( e- ]
argv[argc]为NULL。 % H$ c8 e5 A3 U* o$ `6 y) Y
*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符
, G& E2 U) u0 q& m2 K串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C:
* _' D& c& [8 r# B\TURBOC(对于PATH) 或YES(对于87)。
5 Y, z0 |9 l# z) _Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中
# r+ t+ J1 `" Q说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序 & X' A0 @- j2 w3 s
的局部变量。
! t7 w" A9 S4 g9 E* g, _: P请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下
' L; @$ a) M# S. i+ Z1 c. G的例子:
/ n: e2 d5 W! y9 `' }<FONT color=#0000ff>main() , G% z2 g" y! x) j) N$ J* A
main(int argc)
8 Q3 i2 X% t4 |$ Pmain(int argc, char *argv[])
9 ^ L5 t0 O) q8 rmain(int argc, char *argv[], char *env[]) </FONT> a& z5 A) x+ I& h8 q
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不 + S; J8 L1 |5 Z! I& h+ ?7 e
用argv[]的情况。 * ] v5 W' W! L6 ^
以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
( t3 [1 a$ F) w, O$ P, f<FONT color=#0000ff>/*program name EXAMPLE.EXE*/ 8 I6 p9 w! u2 `, m6 F
#include <STDIO.H>5 I& V2 n: m/ s; @
#include <STDLIB.H>
$ u- e/ L) a, d: E" m7 Y5 o% @main(int argc, char *argv[], char *env[])
9 S$ `# u* p- s3 s V{ ) q _( e* I% S/ F+ J# c B
int i; % J* {+ h# j3 `) N
printf("These are the %d command- line arguments passed to
1 p' V* B0 L. i; k* {7 W8 [main:\n\n", argc);
' v _2 d |# ?; q' qfor(i=0; i<=argc; i++) ; q& U5 m$ h5 ?5 N( q
printf("argv[%d]:%s\n", i, argv); & G' {! Y+ ?& A5 i/ H4 V
printf("\nThe environment string(s)on this system are:\n\n"); + u. }" {! {; x1 P6 u. Z
for(i=0; env!=NULL; i++) 9 R, M" g5 n2 K
printf(" env[%d]:%s\n", i, env);
, Y0 o1 h& ~# k6 {} </FONT>
8 l) h! A4 X7 t7 n8 Y% j B& _如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE: / `% t0 U# W9 N. B4 r9 [
C:\example first_argument "argument with blanks" 3 4 "last but 0 r9 O7 D1 Y. n0 M
one" stop! / a1 e1 l6 e. W- p8 T) g! R
注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument
; @8 k: J) Z. {1 M! uwith blanks"和"Last but one")。
* ^$ e: v* j, _9 y A结果是这样的:
1 r5 q7 q2 r1 }; ~2 S<FONT color=#0000ff>The value of argc is 7 5 ~; z9 f% a! ]$ v$ {% C1 |2 f: D- u
These are the 7 command-linearguments passed to main: ( f: T' `2 d p2 w, {
argv[0]:C:\TURBO\EXAMPLE.EXE
' e2 ]) M" x& [argv[1]:first_argument . h/ T9 G, J/ T C- A6 B
argv[2]:argument with blanks
% ]& r5 ] b: n/ z. P! r- ?) iargv[3]:3 ) e2 p$ n6 @; u) ]2 f. N4 @ Q
argv[4]:4 ) Y3 a9 k6 r7 ?. U0 z# v* ~7 ?- G
argv[5]:last but one % X1 g& U9 p! d2 k
argv[6]:stop!
- u3 U# z# {/ targv[7] NULL)
+ a" q5 T( |. L1 W" W$ NThe environment string(s) on this system are: + e% o ?) K, _5 a# _& g
env[0]: COMSPEC=C:\COMMAND.COM - u$ j( \0 s, s% B
env[1]: PROMPT=$P$G /*视具体设置而定*/ & u, @( N- T. L! r" A2 U" a
env[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/
% o) W# o8 g3 x" V) ]* k* y T& k* G</FONT>
( m5 d4 D. Q9 ~: ~" T应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
2 e0 [- B/ F2 R- z! M括参数间的空格), 这是由DOS 限制的。 " F( h& ^3 f) W2 \ Y
</P>
, W4 J1 Z0 i0 F+ e+ k3 m< ><FONT color=#ff0000>函数名: matherr </FONT>4 Z/ c6 p! X7 K2 E( v- z
功 能: 用户可修改的数学错误处理程序
$ p( f: m" A J, J% \用 法: int matherr(struct exception *e);
% R* S1 P8 | n' }( E0 @程序例: </P>
' |3 i5 Z' B/ |& R2 e+ V G< ><FONT color=#0000ff>/* This is a user-defined matherr function that prevents
. P! ^/ x. a5 r# a5 P4 [any error messages from being printed. */ </FONT></P>7 x7 H1 K; F) ^3 s
< ><FONT color=#0000ff>#include<MATH.H> </FONT></P>/ a8 U; j7 F; Q3 O; q) E* r
< ><FONT color=#0000ff>int matherr(struct exception *a) . \9 m5 b; @; g; X: k, n+ O5 w/ Y
{ " u) T: g& b+ D
return 1;
3 d, B! d- b" t9 e$ t: G) k( i: f} - Q2 e9 d/ E' m% @. i* q8 ~3 p
</FONT>
4 X# Y7 L( X& F# Z8 C% w1 l' I( n( D& d! B' a
</P>
3 P# N4 X7 V$ Q* v2 e7 D2 U' n/ D6 k< ><FONT color=#ff0000>函数名: memccpy </FONT>) M( L* w8 l4 H1 H' T
功 能: 从源source中拷贝n个字节到目标destin中
4 D, V6 f8 L Y! Z用 法: void *memccpy(void *destin, void *source, unsigned char ch, ( m. _. G0 h: F" d' p
unsigned n);
! K. B3 l& s7 p/ b* Z: Q程序例: </P>0 s+ K3 B& @2 A6 _: U' D1 l- K
< ><FONT color=#0000ff>#include <STRING.H>
8 T4 T3 X: N3 b! i& ~! b#include <STDIO.H></FONT></P>
$ g& q2 c Q. D2 @3 E< ><FONT color=#0000ff>int main(void)
5 _; d: c7 s1 v4 `: N$ y$ y# ^{
: s. A C& i0 u5 ~2 Z5 o- b) `, O" d+ wchar *src = "This is the source string"; 1 K5 ]% H1 e3 W4 d1 W' B
char dest[50];
" `- |9 |! m3 z0 y4 q* [8 d' Achar *ptr; </FONT></P>" ~) o/ c( l5 A3 M
< ><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>
: @, m0 X8 q( E* S* T" O< ><FONT color=#0000ff>if (ptr) 8 [% k9 s+ Z+ M9 D
{ 7 j$ D" h1 l6 r9 {
*ptr = '\0'; 6 y7 \5 _# y& q0 p \/ `+ j
printf("The character was found: %s\n", dest); G; d/ K- P7 ?& {
} ( p8 n) g3 H! g+ t. X/ H0 r
else
' _7 |9 ^( b$ u# P$ `printf("The character wasn't found\n");
- l" q* R5 k/ q' D/ m0 r$ rreturn 0;
! t; R4 Z3 A: n) x# l8 Q- _4 d}
: a) Y8 P) [2 m</FONT>
1 ?0 @1 C, P; ?( ^! `( g</P>6 n# M, y5 p$ G7 ?
< ><FONT color=#ff0000>函数名: malloc</FONT> ' b2 k5 Z' G; L$ r& k% \
功 能: 内存分配函数
1 I6 X; k+ F p% a, E/ Z5 `7 o用 法: void *malloc(unsigned size);
9 W& o6 I- B& O, T程序例: </P>- B& e8 h+ [* f3 f
< ><FONT color=#0000ff>#include <STDIO.H>. v V, ^1 ]7 m8 w& l& x# g
#include <STRING.H>1 @0 Y7 @' g0 J
#include <ALLOC.H>+ }: M# {# y9 J5 w+ s
#include < ROCESS.H></FONT></P>
6 Q3 k- H, z" Y< ><FONT color=#0000ff>int main(void)
^. `# K- Z$ w) A i, r{ & x1 Z# I, b( l8 T
char *str; </FONT></P>
* r1 b: b& V$ {1 f" j, [/ Q# U( E< ><FONT color=#0000ff>/* allocate memory for string */ 8 ?- v0 X. M/ `% ]7 ~; J, R
/* This will generate an error when compiling */ 8 z1 M# c/ o4 ]" ]
/* with C++, use the new operator instead. */
0 \$ D `( T9 ~( t6 ?7 {if ((str = malloc(10)) == NULL)
Q! A; _1 t& a4 R/ d R{ 6 f' W0 h3 y6 ~" K& K
printf("Not enough memory to allocate buffer\n");
# }- z% K* g1 p5 a* Wexit(1); /* terminate program if out of memory */
/ @* K7 P; G8 z8 a8 A} </FONT></P>
2 y+ o0 J6 x- F! n: w< ><FONT color=#0000ff>/* copy "Hello" into string */
% N' `9 ]2 q7 r/ qstrcpy(str, "Hello"); </FONT></P>4 ?# d6 `! [/ b9 H% `) |7 k. N% \/ H% c
< ><FONT color=#0000ff>/* display string */
3 S: c8 |+ E$ @* ]( U ^printf("String is %s\n", str); </FONT></P>8 }( ]! V# _ z6 d% M( E
< ><FONT color=#0000ff>/* free memory */
6 x7 `6 H& A: t! ]2 Dfree(str); </FONT></P>. S& t- ]+ S R/ W
< ><FONT color=#0000ff>return 0; 7 J8 m( z. f3 D" Q( Y$ ?
}
; \$ H O2 H$ `: n. U7 _6 K
D0 J4 \5 l/ v8 z6 z</FONT>
$ Y/ D- o0 s% y; v$ M; X- ?</P>
5 e( U/ |! E6 w; T< ><FONT color=#ff0000>函数名: memchr</FONT>
' R4 M! j6 t" t6 V. V功 能: 在数组的前n个字节中搜索字符 3 Q1 {' L: ~# D6 ^( I0 V
用 法: void *memchr(void *s, char ch, unsigned n);
& e. f9 @1 f; j4 @& [程序例: </P>
) o) O, L( f2 ?" w3 x) I/ Q2 z1 _! k< ><FONT color=#0000ff>#include <STRING.H>
1 r; i# G# Q7 l: a#include <STDIO.H></FONT></P>3 q2 K' S+ P7 P! x! ~5 n
< ><FONT color=#0000ff>int main(void)
# W. s0 C. F S- c' B0 e{
+ K- d! u% p, g9 `/ F4 \char str[17]; % a: Y" Q W! U( b
char *ptr; </FONT></P>4 P9 y* x+ r& b9 n3 K) r1 N: A( b
< ><FONT color=#0000ff>strcpy(str, "This is a string"); ( |9 t w5 @5 \5 N+ `& a2 |) u @ o
ptr = memchr(str, 'r', strlen(str));
! @2 R ~: t+ q6 }0 L- a/ @7 cif (ptr) % @4 H2 D1 ]: v8 o8 D/ C# ^4 I$ C
printf("The character 'r' is at position: %d\n", ptr - str); - O+ g2 S& i4 V
else $ N* n1 y5 p: ]9 o* S! j0 |) b
printf("The character was not found\n"); + V3 K4 I ?4 h0 ^- j! j; Z
return 0;
, f7 y& v( k9 v2 w: m2 u# [6 g4 A}
3 l: }. m A7 e' ~' l+ {' U: E</FONT></P>
3 _1 m2 o, L) P< ><FONT color=#ff0000>函数名: memcpy </FONT>
% K) o4 c Y; R1 ?6 a/ D功 能: 从源source中拷贝n个字节到目标destin中
! ^8 p: O7 H2 q7 A用 法: void *memcpy(void *destin, void *source, unsigned n);
8 t _+ ?" y8 f程序例: </P>$ A5 g1 U9 z: y* Q& Y
< ><FONT color=#0000ff>#include <STDIO.H>; Q0 {& m8 l/ w- e- F- J8 M/ G
#include <STRING.H>! f9 a" t0 D |3 _. @
int main(void) ' ]2 l0 Y) s8 M% B- i3 a- C
{
8 V$ e; H% a/ k; H1 I" ychar src[] = "******************************";
, G8 c: G; t2 H, ochar dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709"; - f; S6 X2 o; C# R
char *ptr;
6 M9 P- L4 }- F% X( yprintf("destination before memcpy: %s\n", dest); + \9 Q9 n$ l" @! l6 ~. @% ^* h
ptr = memcpy(dest, src, strlen(src)); $ ]" S* o+ |) F3 h+ {: m3 M j
if (ptr)
$ C" m* v, q% d4 Z5 y8 Y+ c; Uprintf("destination after memcpy: %s\n", dest); 1 F+ m, N! Q' ]
else
% ?; L. M9 x% o+ q2 ?# M0 wprintf("memcpy failed\n"); {3 N4 T7 v) [3 |' r7 L) N# C
return 0; 9 L3 A( T, o9 f% p. L
}
4 |3 G" _0 c. d* n</FONT>
4 n3 `! l4 }$ M- F0 h0 Y+ d</P> J$ ~% F2 k& [2 x# O! F, w( q v
< ><FONT color=#ff0000>函数名: memicmp </FONT>
/ i6 q) u% r& Y3 i7 M功 能: 比较两个串s1和s2的前n个字节, 忽略大小写 1 G6 u4 U: b* i( ?
用 法: int memicmp(void *s1, void *s2, unsigned n); ' [# k6 ^, ?. Q. E* W/ d, I
程序例: </P>
8 L0 R% c: r% z6 O< ><FONT color=#0000ff>#include <STDIO.H>
2 I/ U8 j: ~: v5 u# S' P2 O#include <STRING.H></FONT></P>
" C; M, |. b2 y" z4 u) o< ><FONT color=#0000ff>int main(void)
6 ^2 ]+ l7 y' V{ 6 v/ E+ h3 |, g3 @0 v) a
char *buf1 = "ABCDE123";
1 D3 S- z0 a+ U: v! Nchar *buf2 = "abcde456";
) V9 ]- J; l; yint stat;
4 R+ x: N8 U) B2 Ostat = memicmp(buf1, buf2, 5); ( {, ~! h; A# M; u
printf("The strings to position 5 are ");
1 H2 P% d# S7 fif (stat) ! q& U- Z5 p6 w4 r6 H( {
printf("not "); 5 P/ a! S+ G' R4 i
printf("the same\n");
* X( n' M# k4 e- g6 rreturn 0; + c6 B3 R% A1 W9 v* S( J
}
8 W" i4 o9 ~" \: Q</FONT>
[- |/ s5 i4 q$ V! ?; t</P>
?9 b' E; S9 r9 Q) C- p< ><FONT color=#ff0000>函数名: memmove </FONT>
! A0 h2 R/ @% H功 能: 移动一块字节
" P9 v P0 Z! p' H用 法: void *memmove(void *destin, void *source, unsigned n);
; l1 w) ^: G( l& p, b7 s程序例: </P>% c' @' G( g8 l; i$ L4 @; U3 w. f
<P><FONT color=#0000ff>#include <STRING.H>
; v z! Y [, s( u6 e' V#include <STDIO.H></FONT></P>
( A# s: \: O- ?. q8 t' Z<P><FONT color=#0000ff>int main(void)
/ [* p- V% M& x g! T{
2 e# r" h$ W# O% n6 V" s: |8 T$ Cchar *dest = "abcdefghijklmnopqrstuvwxyz0123456789";
9 f: ]. X& H# O- } g Z, w6 j6 jchar *src = "******************************"; 4 z# p8 o; x$ A2 U- V3 f6 Y7 y
printf("destination prior to memmove: %s\n", dest);
- W' B1 b/ [. w3 vmemmove(dest, src, 26); 8 Q! c: h+ V1 k
printf("destination after memmove: %s\n", dest);
! e2 @7 n% G) m8 M3 wreturn 0;
( u+ {) w H+ w; R} 6 R# _) p1 o4 y3 ]& l- V0 }
% a3 M5 i# h& q4 V
</FONT>
9 H/ f) M( G9 K4 g- T" \</P>. Z& F- M9 G7 ]* |
<P><FONT color=#ff0000>函数名: memset </FONT>5 ]. p& B3 z& P
功 能: 设置s中的所有字节为ch, s数组的大小由n给定
, _& M- m* ]3 \+ E# S: ~用 法: void *memset(void *s, char ch, unsigned n); . v0 _+ r2 R6 Z% ?2 T3 M0 `
程序例: </P>" b3 S, a Y2 x
<P><FONT color=#0000ff>#include <STRING.H>
) \; E$ l/ E# C#include <STDIO.H>. @6 {5 v2 y0 o' K
#include <MEM.H></FONT></P># n3 \9 [! ~% t1 j4 x K7 C4 o
<P><FONT color=#0000ff>int main(void) 8 m3 a& j% l) G* e
{ : k6 A, O5 S& J: y% ?# q: b: K' y
char buffer[] = "Hello world\n"; </FONT></P>
$ S [3 `7 ?6 Q& I, i$ Z9 X9 }<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer);
1 g$ n5 I* ^5 v' w9 R- cmemset(buffer, '*', strlen(buffer) - 1);
' O6 G5 ^; y$ R6 Oprintf("Buffer after memset: %s\n", buffer); ) }4 u0 v$ O$ P. O' ?8 G: ?8 ?
return 0; ( b6 o0 i. @) E7 @% R: f& l" O
} </FONT>
" d7 d' ]) U4 S0 f5 h9 H% r2 o/ j+ G, v+ Q N9 A2 Q1 ]) {- K$ A
</P># `3 G1 R: j, d' c* }: L5 W D
<P><FONT color=#ff0000>函数名: mkdir </FONT>. {, S* \' i( o; T7 ?- Y2 @
功 能: 建立一个目录
) P: U& a9 w0 m+ e/ e( p$ ^用 法: int mkdir(char *pathname);
* k6 |% ?+ n* [/ g* W1 i5 F程序例: </P>- T0 |2 }5 F$ m$ M7 i1 E0 D7 I' k. U0 I
<P><FONT color=#0000ff>#include <STDIO.H>& n1 t; ?$ S1 N7 a* O) F# K$ g' h
#include <CONIO.H>( {- _) }& k$ ~& u$ e
#include <PROCESS.H>/ I' u4 i" ]' b2 f9 X+ t \/ l
#include <DIR.H></FONT></P>
2 G( \! I: o, @& f) t) i<P><FONT color=#0000ff>int main(void) 0 _9 A2 }4 W* W. N/ o, b
{
. g0 t+ G4 F' F' p6 Xint status; </FONT></P>0 O" x0 b2 |4 ^2 m& c' J
<P><FONT color=#0000ff>clrscr(); " m' N Q8 {+ E/ ~- {3 ]( i0 P
status = mkdir("asdfjklm"); ) q0 Q4 u0 x3 P% W ~7 S/ Q) g& d
(!status) ? (printf("Directory created\n")) :
7 Y/ J U$ A9 @0 k6 ?(printf("Unable to create directory\n")); </FONT></P>7 \. M- ?) G( Z& @6 U5 Z5 i. a
<P><FONT color=#0000ff>getch();
0 G( l1 L6 u9 B) r4 [$ S" hsystem("dir"); $ f; C8 p: ]- g/ c7 j1 k/ n
getch(); </FONT></P>
* q# }) h5 g8 X( Q$ m0 a<P><FONT color=#0000ff>status = rmdir("asdfjklm");
8 N. W( J% }4 l' x5 }+ h1 z8 o$ G8 p(!status) ? (printf("Directory deleted\n")) : * S% v8 z: {6 c% A+ n$ l& a
(perror("Unable to delete directory")); </FONT></P>
- m0 o0 o" ^$ t7 g<P><FONT color=#0000ff>return 0;
4 `3 f5 ~) O$ U: o}
% \4 |; ^9 E- {) s2 |
3 I2 J* P e% i3 b+ O</FONT>
$ h# w4 l, G0 e T</P>6 S: H) ~ f A+ P
<P><FONT color=#ff0000>函数名: mktemp </FONT>
5 p1 s! @1 v/ S! q7 s. [功 能: 建立唯一的文件名
+ L) M% H0 N9 D- k& w用 法: char *mktemp(char *template);
+ |! T( J& X* V* \# }5 ^) E程序例: </P>
6 d) v7 I& f5 y& H, L<P><FONT color=#0000ff>#include <DIR.H>/ Y- O5 t7 w2 d4 f: u) t
#include <STDIO.H></FONT></P>
! B' Q5 z7 k/ n/ O% j3 K; v6 S<P><FONT color=#0000ff>int main(void)
/ \' @% m1 \7 l8 S+ l- G{ ' \, `, T* N. F9 A; ]4 H
/* fname defines the template for the
+ C% [3 N8 k' y+ C2 ]temporary file. */ </FONT></P>8 r& f1 _0 [+ _. C; h
<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>) o$ u& h8 N1 l4 z, W, G( g
<P><FONT color=#0000ff>ptr = mktemp(fname);
$ a% `4 e( y% K" \% U/ rprintf("%s\n",ptr); ) E7 E# C5 Q( M- L8 d
return 0;
4 n( B7 @5 F! b# q- }3 A}
4 E2 A, q; Z2 j. q- }/ C8 {: O3 y3 l</FONT>: p1 s1 j- F+ s W
</P>
: X+ `9 \3 }; \. y8 I4 n<P><FONT color=#ff0000>函数名: MK_FP </FONT>: }& f; k1 K5 d8 G) q# Y. k
功 能: 设置一个远指针 6 v- \5 k0 Y, L' h
用 法: void far *MK_FP(unsigned seg, unsigned off);
" k% ]. I8 Q2 Y' G程序例: </P>* S6 |9 B* S/ i7 {+ \3 ^$ k5 a# B1 @
<P><FONT color=#0000ff>#include <DOS.H>7 e( U: q' u" `* z( f
#include <GRAPHICS.H></FONT></P>
' B* f1 Q. [( V4 ~$ c<P><FONT color=#0000ff>int main(void)
7 y4 `2 I8 D0 a& ~/ ?{ 1 K) c. \2 B* A+ `+ X! p
int gd, gm, i; / E) [0 C- ] L" k. K: L5 `2 ]
unsigned int far *screen; </FONT></P>: p5 |" c) k7 n" R6 E, o$ e3 Z: f9 r
<P><FONT color=#0000ff>detectgraph(&gd, &gm);
& z9 X6 M5 B' p0 g" n9 ]! K b$ Cif (gd == HERCMONO)
m( t2 i' O1 }6 W( I! |screen = MK_FP(0xB000, 0); 9 @) m3 _) S" T2 t; P* K3 n/ W
else
0 j- E$ K2 L2 \# Z; Hscreen = MK_FP(0xB800, 0); ( w9 D' k) t+ V2 {7 a
for (i=0; i<26; i++)
, p0 o/ t: G: {% n! Hscreen = 0x0700 + ('a' + i); : w6 K6 u" E, v7 ]2 L K- R' m
return 0; 1 [& @% V" `1 u7 C
} 6 E+ M- {9 Y0 {: U
</FONT>
; J) P0 k3 y* h3 h' `, c$ Q</P>
8 t/ }1 z9 i: j% N' x% E1 h<P><FONT color=#ff0000>函数名: modf </FONT>; G$ t/ [9 Y9 D
功 能: 把数分为指数和尾数 4 i, J3 g6 G) z7 ?9 W. o ~
用 法: double modf(double value, double *iptr);
2 G# K8 p5 m" k; ^ a程序例: </P>
) ?0 ]( h9 G$ K0 [' C2 k# o<P><FONT color=#0000ff>#include <MATH.H>
+ G# g k, U1 |#include <STDIO.H></FONT></P>. J. s# F8 G2 r7 F, \& u y
<P><FONT color=#0000ff>int main(void) g1 g3 I* t8 c t7 \
{ 6 e; n& f) Z$ F# N4 J
double fraction, integer; % H2 g3 U: p4 j8 Y
double number = 100000.567; </FONT></P>
0 P: g, Q5 }0 G* P<P><FONT color=#0000ff>fraction = modf(number, &integer); , l% `+ T. ~* `& `' G6 [7 l9 }
printf("The whole and fractional parts of %lf are %lf and %lf\n", % e, o% }8 Z+ Y8 U$ |# k- s
number, integer, fraction);
1 E' I( f5 z7 B* o/ b5 nreturn 0; 0 u8 @" w8 D N& w# r" O7 j8 O
} </FONT>' Y; N. X- B. L2 q ?# \
! G+ M% n- h: ?! k1 Y</P>
6 C' b9 B$ b! y; S' I8 `: w/ h/ H<P><FONT color=#ff0000>函数名: movedata </FONT>
& H1 ^4 N; E+ n/ _% A8 d功 能: 拷贝字节
" e# z C* C V3 o* e, I- W用 法: void movedata(int segsrc, int offsrc, int segdest, 2 H: ~) t- O. ` V. z$ ]8 U
int offdest, unsigned numbytes); 5 d! B* j) m) _4 O
程序例: </P>7 s3 S3 B* O: `5 |# c
<P><FONT color=#0000ff>#include <MEM.H></FONT></P>0 k/ r5 x, M. p
<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>
* _5 x7 v/ P/ o; c6 I$ {<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */ 6 E1 i+ z! V9 R- n9 M- R
void save_mono_screen(char near *buffer) 7 n' O* x& i: u& N/ ]( Z
{
! `9 S( P/ @7 ~# n p/ {/ B+ k" ymovedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2); . A2 i) J2 S8 @; x5 M J( W* w
} </FONT></P>. b, j7 x- x% P7 f/ [
<P><FONT color=#0000ff>int main(void)
% O5 w% E- Y8 _; I& \: {' d{
l$ M/ f6 o) @) V+ q" tchar buf[80*25*2];
; y" ~: D8 V* rsave_mono_screen(buf);
( @9 h/ S, w5 f5 o& u3 k} ; m7 K, [+ j( i7 e
</FONT>, U' T, p; E' Y2 C& V: ^" X" z8 ^
</P>, ^* W _3 ]4 J' o: @7 y
<P><FONT color=#ff0000>函数名: moverel </FONT>
! t2 }$ c, U. N- q8 T; P功 能: 将当前位置(CP)移动一相对距离
: m6 o& X/ p: k' V) d" y5 W/ v用 法: void far moverel(int dx, int dy); $ k8 N& L6 ^8 ^0 ]( M' D
程序例: </P>: S7 e& k" r8 f5 s4 v1 H" X
<P><FONT color=#0000ff>#include <GRAPHICS.H>
( ], s! l' m3 o4 c9 M0 X7 D' N#include <STDLIB.H>- ]# L( d' Z; p& L+ J& w: V! }( [" h
#include <STDIO.H>
: a7 ~6 U3 Y+ h1 i#include <CONIO.H></FONT></P>
6 W/ v! `+ |, p/ K<P><FONT color=#0000ff>int main(void)
7 Z, q' { }6 z0 N$ _{ * C* w, g% S# N. ?
/* request auto detection */
0 m; W! {; j0 F1 H' ^& ^9 ~# oint gdriver = DETECT, gmode, errorcode;
* {4 U5 w. r2 v' l: Schar msg[80]; </FONT></P>3 q Q; ^. _, s) B
<P><FONT color=#0000ff>/* initialize graphics and local variables */
6 v" y- ~5 l$ j R# Cinitgraph(&gdriver, &gmode, ""); </FONT></P>4 X. a6 F! b* _ _ N: u: k# j: n) J( s
<P><FONT color=#0000ff>/* read result of initialization */
& i5 l4 V+ M" L. J: xerrorcode = graphresult();
( c! F9 @( l3 _; B2 I/ @6 P: l! dif (errorcode != grOk) /* an error occurred */
* ^& T! m" O9 |. k, q. P- f{
+ g5 E: n; M7 |$ V0 fprintf("Graphics error: %s\n", grapherrormsg(errorcode));
, {( y r, \ N% u( p3 E% m# uprintf("Press any key to halt:");
+ e3 S. T. D+ _getch();
& F9 r8 R* R1 v* f9 ?! F3 k/ D0 `9 bexit(1); /* terminate with an error code */
1 C2 g b9 D5 R7 |6 e" N3 Y} </FONT></P>
2 c! K6 T) j9 M. z5 h2 c<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
& ~/ Z l' Q: j5 [ kmoveto(20, 30); </FONT></P>
3 q- Y9 `. Z! Q<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
) |; U1 R; m6 j H! w' Q. g% j' fputpixel(getx(), gety(), getmaxcolor()); </FONT></P>
4 j" s I% J. _) X! C* [<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ * x# Q7 Y+ I. i+ j# Q8 d- \" k
sprintf(msg, " (%d, %d)", getx(), gety()); % K) c: M( d" `# P9 g7 @
outtextxy(20, 30, msg); </FONT></P>
' R( W( \9 a1 I) O4 \<P><FONT color=#0000ff>/* move to a point a relative distance */
. d0 Y# z* ^! Y1 ` [/* away from the current value of C.P. */
" F/ k, }$ Y; g* O$ `- C2 ~moverel(100, 100); </FONT></P>' o- N) k" C' T2 J8 [
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
, W8 H8 D# M$ C3 A2 l1 @2 D/ [putpixel(getx(), gety(), getmaxcolor()); </FONT></P>: ~: d3 k: j5 G0 s$ r% j0 E/ z7 e+ W. g
<P><FONT color=#0000ff>/* create and output a message at C.P. */ # Q- w- _ \2 M4 D, @
sprintf(msg, " (%d, %d)", getx(), gety());
/ C0 L. d m2 c. i0 z% P2 kouttext(msg); </FONT></P>- Z" N7 c @: P* D. P% q3 u
<P><FONT color=#0000ff>/* clean up */ : }) x2 M$ n: Y4 g; |/ v
getch();
, D: O; \2 Y i0 lclosegraph();
; g+ c6 p9 z5 q/ \7 [return 0;
5 _0 [1 O% w: V( X2 R- u* `3 a4 q} y. E4 J0 Y y# h3 @
</FONT>6 M( ~" [2 Y$ Q5 k) q( D0 g3 y
</P>
) b: T3 j# a4 ^7 ]5 V) _& c1 f<P><FONT color=#ff0000>函数名: movetext</FONT> & x4 Y& r/ m4 a8 L& ?& Q
功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域
. \6 k* {+ ?, c/ T) s. ^用 法: int movetext(int left, int top, int right, int bottom, + j4 S3 E& c8 E- B' \7 n/ j8 u9 L; x
int newleft, int newtop); : e/ G( o( P1 l0 w K2 v
程序例: 8 w& i, n- _ D7 t5 f: V F
<FONT color=#0000ff>#include <CONIO.H>" C3 m9 R" L1 V7 h) D
#include <STRING.H></FONT></P>
9 j, J* K& G Z! F$ w0 e' j: P<P><FONT color=#0000ff>int main(void) 6 r% U, }- T5 P8 p
{ 6 q& S' _, d/ j( S* m" C7 x/ B
char *str = "This is a test string"; </FONT></P>& a/ Q# R& l n' `6 @9 g K1 B
<P><FONT color=#0000ff>clrscr();
7 F' L( f3 c3 lcputs(str); 5 ~+ `" E. g# f
getch(); </FONT></P>$ f0 @5 C& v0 b+ }% U9 Q# b" t7 c
<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10); " x) e# _2 M9 Q$ F/ ~0 K
getch(); </FONT></P>5 k, m5 @7 [9 I
<P><FONT color=#0000ff>return 0;
9 X0 Y+ ^8 J" t, g" c% o3 A$ l} 4 }1 M; P4 @7 F: f. m( o
, ?( k* I4 N/ w5 F& r; t0 k
</FONT></P>
/ @! t' o/ G1 ]0 l, s- H. W<P><FONT color=#ff0000>函数名: moveto</FONT>
2 g0 Z& r i0 B6 y功 能: 将CP移到(x, y)
* R: m0 v7 T; e. I" c1 k& ^- b% a用 法: void far moveto(int x, int y); ) f1 C* V& @: m. V: `- ^( L
程序例: </P>2 x- g+ p- |, p' Y
<P><FONT color=#0000ff>#include <GRAPHICS.H>' L/ ~( }1 A9 o$ P" e
#include <STDLIB.H>
1 s4 w7 x3 G @/ C7 M- T#include <STDIO.H>
7 o* Y6 l5 X' N8 H#include <CONIO.H></FONT></P>
; }! E2 w+ n$ @5 z/ d, t! ^<P><FONT color=#0000ff>int main(void)
0 Z& ? \ L& m# \) G$ o% x; D, b{
* t, M. k. }( K3 i; A4 Y" v/* request auto detection */
- V& T* `+ F, K; w" B& D! Zint gdriver = DETECT, gmode, errorcode;
9 w% q+ B* T& V5 gchar msg[80]; </FONT></P>
/ L2 e1 w! |' |! `<P><FONT color=#0000ff>/* initialize graphics and local variables */ : w1 ?" Z4 y& r6 C+ ^4 F0 Q8 ]
initgraph(&gdriver, &gmode, ""); </FONT></P>
* j8 N4 i( A. e( ?; L# _<P><FONT color=#0000ff>/* read result of initialization */ ! n q$ {" y* o4 O, E% g
errorcode = graphresult();
+ \! G7 ?2 g2 N0 N8 vif (errorcode != grOk) /* an error occurred */ 9 K8 |, [# N$ G( M" \$ D1 E; r' V8 d
{
- T) B! ]* y; C/ c# Y' Dprintf("Graphics error: %s\n", grapherrormsg(errorcode)); 1 Q1 W0 S/ d9 ^0 ], V8 B7 E
printf("Press any key to halt:");
+ B' v& T! F. i, t% Q4 A, V+ Ggetch(); ( X' G" ^% P+ l, H" Z
exit(1); /* terminate with an error code */
" w5 ^2 b7 p. {' Y. V/ W: V} </FONT></P>
: ^. t. }- j8 Q! C' ~ C<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ $ S( |3 U& d: e: v
moveto(20, 30); </FONT></P>
6 [! ^) o4 t& r" i<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
- b0 V4 x) L) }; Yputpixel(getx(), gety(), getmaxcolor()); </FONT></P>9 M/ A- ]2 j: P. Z/ ]
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ * m) p& _% J9 G( l
sprintf(msg, " (%d, %d)", getx(), gety()); - r1 j; d8 Z$ U2 K
outtextxy(20, 30, msg); </FONT></P>6 k. Z( F+ {3 v* Z9 z. ]8 P
<P><FONT color=#0000ff>/* move to (100, 100) */
+ }9 M M) l/ }moveto(100, 100); </FONT></P>
( h5 g% Z( m6 d1 x* d( s2 g" G<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ 3 y. ? ~8 U- H r! b- I' G8 z
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>/ `9 z4 E- D" `
<P><FONT color=#0000ff>/* create and output a message at C.P. */
5 }' V, x* O C0 c2 L. h: Csprintf(msg, " (%d, %d)", getx(), gety()); ' r+ C7 Y! C0 Q. _4 O! m
outtext(msg); </FONT></P>1 @0 O1 D: \! _9 ?; I4 Q4 Y! P
<P><FONT color=#0000ff>/* clean up */
' g" I/ x) O: J9 r, Ogetch(); # J: {8 l! f3 H; n/ O+ {% L
closegraph(); % T" L$ R; U# v
return 0;
. u0 s' v; C" ?; y! N: f. |}
; X( ^$ s1 V7 x& a. I7 v</FONT>2 V7 X# ^' U/ j& s6 P& s2 c7 G% ~& j
</P>
+ O2 x0 L+ Z9 \' ~' ~1 \2 Y1 E. L<P><FONT color=#ff0000>函数名: movemem </FONT>9 b. s7 e: T' W; w8 y
功 能: 移动一块字节
" _/ \* `% }' e3 C7 {+ l( G用 法: void movemem(void *source, void *destin, unsigned len); & l% ]: ]1 _# _( D, g
程序例: </P>
J) c) w4 [- r<P><FONT color=#0000ff>#include <MEM.H>
' c( w$ A9 c" ]% v#include <ALLOC.H>
* v& M0 g* x& G. N#include <STDIO.H>2 i; c, g0 h) z
#include <STRING.H></FONT></P>) ~; ]5 F% B, h$ K8 E& B+ [8 Q
<P><FONT color=#0000ff>int main(void)
Y Q+ Z/ [ b% P. x{
5 D0 _2 F' t0 C( i# Fchar *source = "Borland International";
' v+ a2 ]& ]. |7 {# V7 j; ^char *destination;
1 U7 r, E* s# |, ^+ |) k" Gint length; </FONT></P>5 i8 f1 G+ n N; { k$ X
<P><FONT color=#0000ff>length = strlen(source);
/ L9 ?# q+ N: z$ Odestination = malloc(length + 1);
" K: h. ]/ i4 u. q/ m5 }( jmovmem(source,destination,length);
; e' y. F% E6 q' d% b. nprintf("%s\n",destination); </FONT></P>& p3 H( D$ O6 ~- |$ R5 W: }
<P><FONT color=#0000ff>return 0;
" ]* Z' |- c* M} ! |, R* ~3 z- E4 S3 d
5 W8 x3 e/ W( ^# O- g
</FONT></P>
. b0 i. ? Q) B/ A# z* G<P><FONT color=#ff0000>函数名: normvideo </FONT>
3 |# L9 `$ o% f# l# U) M$ ]功 能: 选择正常亮度字符 $ x( c; ~ l2 _ r
用 法: void normvideo(void); . O5 H( v1 W+ P4 l7 i% y5 K; r
程序例: </P>- P9 H2 Z' e$ d5 P
<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>2 C+ k2 ]; K. N/ B. h
<P><FONT color=#0000ff>int main(void) , _6 Q/ i. D2 u: d M
{ 7 L. B. ?/ R/ m" i& }" z" U
normvideo();
% @$ e$ v+ r: ? Q! E9 N+ w6 Bcprintf("NORMAL Intensity Text\r\n"); 9 J- w7 I* n! m) J
return 0;
* Z% `0 f+ H0 B2 I1 ?0 d6 v} 9 s& z; V) M! B5 F3 G
" b6 s" d! D' p% z/ w, w; k3 s& t
</FONT></P>
! x& G2 J" g r& `4 U$ U, O<P><FONT color=#ff0000>函数名: nosound</FONT>
+ ]' L; \! e' ?3 C( D功 能: 关闭PC扬声器
6 |/ ]: v$ `$ J$ ?用 法: void nosound(void); B7 I# g% Q1 x+ t, S2 D
程序例: </P>6 E: u4 ^ s5 s2 X& ~: X1 J, v
<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>; ~- m7 Z6 \. F) G) I4 H
<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity. B8 m u3 n0 L- s
This was determined empirically in Australia, where a new factory ( L, `$ Q$ ?, c, ^, o/ H: |
generating 7-Hz tones was located too close to a chicken ranch:
1 w9 o2 }# y5 I, x5 tWhen the factory started up, all the chickens died. </FONT></P>
. T0 B3 w# ^, S% \4 }, k- a<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone. ; w4 g6 `& P1 V: H0 \
*/ </FONT></P>
8 f$ i7 |9 H9 I: h& a R1 Z& L/ w<P><FONT color=#0000ff>int main(void) 6 u* n" h% g; [
{
% @" l( \0 ]. |4 ksound(7);
& P8 Z* b) H$ h! A2 R& O6 S" Qdelay(10000); ' T3 c3 a* ^: ~, E4 J4 g: c
nosound();
2 ?) X% \$ ~$ ^' \& H% F}
7 s4 k- T" B; H% P! _5 `8 e</FONT></P> |
zan
|