- 在线时间
- 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>
" F& |: L( l3 ]1 q J5 ]< align=left><FONT color=#ff0000>main()主函数
' C# \3 B/ P i) G5 z0 d</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某 / i9 e7 d) k! s- j* A
个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 , c3 u* ^; F( L: t- G
在哪个地方, 以下几点说明都是适合的。
$ `, g! f" u6 T7 c1 F/ w) S<FONT color=#000099>1. main() 参数 </FONT>
m7 n/ p. X; e0 e在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。 : V( B a, ^3 M3 \9 V3 y
* argc: 整数, 为传给main()的命令行参数个数。
4 H4 H7 V6 H4 K+ n4 b* argv: 字符串数组。 5 j9 T: T( F8 Z8 \
在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0
9 l# V' I* O: d' n+ L+ d以下的版本, argv[0]为空串("") 。 8 p( m* u7 f: \
argv[1] 为在DOS命令行中执行程序名后的第一个字符串; # E% P; D+ s8 e0 g6 X
argv[2] 为执行程序名后的第二个字符串; ! q \. w6 `' S& T8 a
... 6 q) B! D$ T! L" v
argv[argc]为NULL。 , G U& S2 T* X
*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符 : ~8 E: g; Q/ X' R
串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C: 8 P) d G9 z6 T! U
\TURBOC(对于PATH) 或YES(对于87)。 ) d- m6 @8 _$ a/ e; N( r
Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中 ; W* N8 e0 @" O) g5 V1 J
说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序 2 ?# e, f4 s+ I; M% H
的局部变量。 ' ]) q$ y7 \( N/ X) U
请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下 6 a$ n4 k+ b4 F
的例子: % ^: W& K, o, v x
<FONT color=#0000ff>main()
5 Z s. ?+ {% `/ x7 F8 hmain(int argc)
: a( `7 M c2 T/ X hmain(int argc, char *argv[])
% x5 M" S' Y/ h' y+ {( n& b* v+ ?main(int argc, char *argv[], char *env[]) </FONT>
% ~& f% w1 A, K其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不 - F5 r! Y8 \* R8 L" L5 R& m2 x/ T& a. t
用argv[]的情况。 3 M0 L& o* ~9 a, q; z* ?1 i
以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数: / M n7 Y L3 U. v- g# t
<FONT color=#0000ff>/*program name EXAMPLE.EXE*/ ' m: f! X: C+ u
#include <STDIO.H>$ x( C5 e- }* D/ X
#include <STDLIB.H>
! n" C Y4 @6 Z2 c% I, ~" }8 _main(int argc, char *argv[], char *env[]) : h, P; |: n* [+ |3 Q
{ ) T6 k% s- M. B
int i;
7 r4 O# g |( j8 Cprintf("These are the %d command- line arguments passed to
( i' P1 L7 G0 o: T/ k7 ~7 Emain:\n\n", argc); ]( L) ]9 |$ l* K, r" f
for(i=0; i<=argc; i++)
1 I, z5 p# Z9 ^, ^printf("argv[%d]:%s\n", i, argv); $ b7 u: W% z, ]1 }: v
printf("\nThe environment string(s)on this system are:\n\n"); : t+ e9 ~9 q3 d
for(i=0; env!=NULL; i++)
; S$ f* O5 O) J- v8 ~9 y9 J& Hprintf(" env[%d]:%s\n", i, env); 4 m% r Z1 K5 S2 }( R* `5 B6 }
} </FONT>' ]3 A @ r7 f1 R3 [
如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE: . w& L: b0 S/ k- {- } X
C:\example first_argument "argument with blanks" 3 4 "last but
, R. j: _* }) x) W9 None" stop!
! o: @$ X! D6 }6 r9 t4 J- y注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument : C4 s. O7 L: h8 q/ ?
with blanks"和"Last but one")。
; V! i: Y8 H# N: \% i结果是这样的: I* z- E7 h; s( K! A7 h5 Y) y
<FONT color=#0000ff>The value of argc is 7
( l9 @& n/ s6 b/ H mThese are the 7 command-linearguments passed to main: 7 o* G' f6 b( M% b1 V* ]' N- l
argv[0]:C:\TURBO\EXAMPLE.EXE 8 N* p% d( Y {+ f8 O- z# R
argv[1]:first_argument
! [+ ?( d3 [* ]) R+ cargv[2]:argument with blanks 5 x% C1 M+ v# |% ~+ J4 z( i
argv[3]:3
! Q4 z5 d: i; ^- b8 T! Jargv[4]:4 - J* ~: k( p0 u* {% C U. [
argv[5]:last but one $ q/ n' ~& X; A7 ]4 d
argv[6]:stop!
7 `! t Q- x, l# M3 n$ Cargv[7] NULL) # _% I" R1 J, R6 X1 c
The environment string(s) on this system are: 4 n9 ^& f4 c! ]1 s/ k% _+ n. z
env[0]: COMSPEC=C:\COMMAND.COM
& h2 U$ k& S& {8 ?; denv[1]: PROMPT=$P$G /*视具体设置而定*/
+ ]- B' b% q1 ]env[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/ " i5 f, L6 U4 `1 G C: t" m$ c
</FONT>8 _6 \) C8 p$ j# Q5 s) D
应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
- d; B% G1 L& T7 p1 o. q4 h- ]括参数间的空格), 这是由DOS 限制的。 * |; g7 Z; R! }/ a: q' D( [" p
</P>* F0 U- w! ]2 e/ W* b! \
< ><FONT color=#ff0000>函数名: matherr </FONT>& t, q4 O) D K* R1 d
功 能: 用户可修改的数学错误处理程序 % E: J# q/ e) n, w# ]0 ?( ]/ C( {
用 法: int matherr(struct exception *e);
( ?! w- n5 J/ [程序例: </P>
' |/ C+ x9 g, ^+ y9 z< ><FONT color=#0000ff>/* This is a user-defined matherr function that prevents ( `* ]5 S* j5 d4 c0 R5 c
any error messages from being printed. */ </FONT></P>0 A$ K6 f, {. t+ F
< ><FONT color=#0000ff>#include<MATH.H> </FONT></P>
) w2 C5 L$ V; f- O+ ]< ><FONT color=#0000ff>int matherr(struct exception *a)
! |8 F- L* n# l9 H1 g, m{ , V5 P5 i% k J4 @) F1 M+ ^, V
return 1;
! k- B4 f5 ?1 b4 s}
" T6 J& \2 c }9 m9 G- ^- y</FONT>
1 O+ _( T$ [6 H: r# ^* P2 b: N4 W" G' L6 g" y0 D) I$ v
</P>
4 v% C3 K7 \) X5 l& M" o' y3 u< ><FONT color=#ff0000>函数名: memccpy </FONT> V1 g& ~2 w1 D* T* {6 \1 z, }1 [
功 能: 从源source中拷贝n个字节到目标destin中
8 ~) K6 b- _$ O1 ~& z# r E用 法: void *memccpy(void *destin, void *source, unsigned char ch,
6 O+ r" i* l5 x9 ?1 s* F! runsigned n);
3 o& d" F3 U! M9 w8 C程序例: </P>3 ^9 [- w. ^/ L) I) R% R/ o6 @
< ><FONT color=#0000ff>#include <STRING.H>) ^3 x' c5 f0 w4 D# ` b/ K
#include <STDIO.H></FONT></P>3 i4 F8 q1 U) t5 z; _. q' o o/ V
< ><FONT color=#0000ff>int main(void) ! b4 e. @- O5 f" u
{
4 L8 E: o7 Y3 [4 U- L6 |, a9 s1 F' bchar *src = "This is the source string"; 0 v4 Y; r6 G5 @3 ?9 A
char dest[50];
" g! m, J/ T; x' @' ] J" v) \char *ptr; </FONT></P>5 r% t" S# c. w
< ><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>3 K) P, u) C4 G# J: p! r+ T% }- c4 b0 p
< ><FONT color=#0000ff>if (ptr) 7 K. t0 @) j( N0 i# ~# X% M
{
/ j% w3 j. B- F* d*ptr = '\0';
& B( k; Y0 h# k8 m2 }printf("The character was found: %s\n", dest); 4 X2 B9 I: u) c) w1 F
}
2 ?, ?4 t% X X8 {1 ?8 b1 O2 Lelse % L9 k, j2 }" v+ I6 r
printf("The character wasn't found\n"); ! @ e5 I/ _0 c' L
return 0;
) n5 C2 j; t5 H, _6 B2 Q}
% X0 K) ] t- o( R9 I</FONT>
: Q" \- F9 E1 `; T</P>" x d% Q8 t! x- L' E/ q9 P
< ><FONT color=#ff0000>函数名: malloc</FONT> b# t5 d/ A: z0 z
功 能: 内存分配函数
7 f! w# F8 N$ o6 d4 u* E! o( n7 |) |用 法: void *malloc(unsigned size); , D" u( T6 A1 L/ r/ e8 h
程序例: </P>
! ~% m8 d1 h3 H! R0 V9 j' r< ><FONT color=#0000ff>#include <STDIO.H>
# Q+ T$ r6 ]6 J/ y6 [' C4 p#include <STRING.H>
* P) H6 D8 R- R; J+ W; I3 M- j#include <ALLOC.H> h' v" e6 v" B0 T- p( }
#include < ROCESS.H></FONT></P>: e) U; K8 G; ]' ^
< ><FONT color=#0000ff>int main(void)
' E/ v8 R$ s9 \: ~' b6 ]+ D0 b2 E{
: ? U8 m, u. F r/ I: |* Ychar *str; </FONT></P>! W r0 |* P6 e. n- k; m, T
< ><FONT color=#0000ff>/* allocate memory for string */ b+ `$ e' X3 e" |1 m5 I9 m: ~( ]
/* This will generate an error when compiling */
0 z( n' V+ W2 i/* with C++, use the new operator instead. */ - O! |+ [6 u" `' @" d
if ((str = malloc(10)) == NULL)
8 c+ k Q" C7 Q7 l0 [{ : \+ M5 ?9 a/ u1 U
printf("Not enough memory to allocate buffer\n");
1 |9 r' Q: v# u9 v& nexit(1); /* terminate program if out of memory */ 6 S+ ?3 p3 W: V
} </FONT></P>
- g8 q" g) e2 {< ><FONT color=#0000ff>/* copy "Hello" into string */ 0 A) i' C/ a% N; Q
strcpy(str, "Hello"); </FONT></P>. s5 C3 z2 s$ S( {: T* V o4 b
< ><FONT color=#0000ff>/* display string */
K0 k) c' K) z; N3 c# ?8 nprintf("String is %s\n", str); </FONT></P>
) d7 ?0 e; B* E7 z< ><FONT color=#0000ff>/* free memory */ % G1 b: Z7 b0 m' o/ q1 _ R
free(str); </FONT></P>7 B9 l: i; P7 U* Y4 z; X* s) p
< ><FONT color=#0000ff>return 0; 4 z; X# L4 W8 r2 [) P5 z2 v
} * n) C3 M$ Q( Q1 R2 c8 D/ x! [
5 q# m6 A7 m& L" W+ V
</FONT>
, p! [ ?7 G5 u2 h n' y; _</P>
, B( D8 z/ F0 T8 q< ><FONT color=#ff0000>函数名: memchr</FONT>
; q$ A( R1 A" Y功 能: 在数组的前n个字节中搜索字符
) V- M7 {5 e: [8 c: C用 法: void *memchr(void *s, char ch, unsigned n); ' O) T; k& b9 G0 g k
程序例: </P>5 x/ K- F6 ?* N9 F) M3 ]
< ><FONT color=#0000ff>#include <STRING.H>) d8 C+ L, J; L2 v! \7 ~8 F
#include <STDIO.H></FONT></P>) j6 }0 |+ W' T( @
< ><FONT color=#0000ff>int main(void)
2 S! \9 o" ?) w* k3 a{ " U9 I+ K; F1 B+ h3 O# Q, T
char str[17];
1 _7 c3 N" D2 C( t+ I5 F- N5 Nchar *ptr; </FONT></P>
4 j* P6 n. G0 e+ w: Z6 A< ><FONT color=#0000ff>strcpy(str, "This is a string");
! _5 V- L( @: c( Bptr = memchr(str, 'r', strlen(str));
% u8 l+ ^6 a gif (ptr)
+ Q4 u, V% G$ ^$ ~% Oprintf("The character 'r' is at position: %d\n", ptr - str); ( ]. J# b7 n8 P. Z \
else
9 T" [/ u) B; nprintf("The character was not found\n");
$ E1 {; g4 t/ Z+ Mreturn 0;
; e# I0 Y' U$ _$ t9 h} : G9 R0 v4 T5 E
</FONT></P>4 D( y& q+ m4 r
< ><FONT color=#ff0000>函数名: memcpy </FONT>
( }6 H5 E* W) \' y. M6 {功 能: 从源source中拷贝n个字节到目标destin中 & d( S+ t3 d" V) a; L$ J
用 法: void *memcpy(void *destin, void *source, unsigned n);
- I8 F c! h0 R7 i5 _" U程序例: </P>! B& u9 H" y: ^" [$ q; k5 [
< ><FONT color=#0000ff>#include <STDIO.H>( S8 w; I5 R& I! M& k( U. y& B" I
#include <STRING.H> l! B5 m6 l0 C5 m) k
int main(void) + x+ G5 i( w6 U7 e) L
{
$ U7 x/ Y" I4 g8 z0 a+ X/ A* schar src[] = "******************************"; * K$ ?- Z: |9 D( Z }' u3 [" P
char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709"; $ A A J2 l$ Z3 P. h- A
char *ptr;
0 m" H% C. Y5 d9 P& F3 [& y/ Qprintf("destination before memcpy: %s\n", dest); 4 A6 o$ G$ s) ]8 j5 F
ptr = memcpy(dest, src, strlen(src));
( z7 S/ B0 ~+ m! B7 cif (ptr) ( R5 n+ n# B ~
printf("destination after memcpy: %s\n", dest); 4 r) P3 y' q" j) F# e
else 4 N J( S/ ~/ R- P1 Z+ D! x
printf("memcpy failed\n");
; l* [0 e2 u$ t2 d; E# Dreturn 0; ' A/ f2 e& `( \
} 3 d. x; L* `' a1 u( s
</FONT>0 E/ H! f1 ~! a4 S
</P>4 ~2 w& {9 S" f! j& Y0 k
< ><FONT color=#ff0000>函数名: memicmp </FONT>
8 G' k: h" v) P+ s0 }功 能: 比较两个串s1和s2的前n个字节, 忽略大小写
R3 s/ n% t9 L1 t用 法: int memicmp(void *s1, void *s2, unsigned n);
1 B: y+ d9 X! }程序例: </P>+ b3 ~& W3 ~# \' A
< ><FONT color=#0000ff>#include <STDIO.H>
1 q1 j( N1 t8 E! w$ P6 w$ |#include <STRING.H></FONT></P>
9 I9 z, w2 b2 p% \7 F< ><FONT color=#0000ff>int main(void)
: ?7 j h3 p' h0 z$ ~( V/ z{ & }- O9 N; W/ C5 a$ ?5 C7 ~- ]- d
char *buf1 = "ABCDE123";
& l4 [) r# L0 v0 K$ Z' p0 d3 v0 Gchar *buf2 = "abcde456";
; w0 Z0 T2 ]5 t# Jint stat; 0 k/ @$ B/ K, n# I+ |/ Q
stat = memicmp(buf1, buf2, 5); T# D( r9 X5 r6 R
printf("The strings to position 5 are ");
2 T, d7 _- B" m" E: N: s7 Xif (stat)
, R7 ~- B5 r3 \1 J; @% _5 B5 ^printf("not "); # a9 m9 o2 A. n% K
printf("the same\n"); ( I4 u% o( [9 Z) A( n
return 0;
- w( u! a0 ?+ }" `" I}
" X1 d4 l. V Q/ f% J</FONT>
" |+ A) R. K5 J7 j0 B( h- p8 O6 D</P>
# w z/ ~- I9 J/ G0 {< ><FONT color=#ff0000>函数名: memmove </FONT>
" J+ N! k8 |* t; N功 能: 移动一块字节
( {4 j' o2 G# \用 法: void *memmove(void *destin, void *source, unsigned n); . n0 H* Q( t/ @
程序例: </P>
& v! {: \% ~0 k6 p) t& E7 F( M1 E) [<P><FONT color=#0000ff>#include <STRING.H>8 s+ m! Y5 [/ E5 _' Z: D0 w5 y
#include <STDIO.H></FONT></P>
; ]" m% |+ l w8 q* n% q, k1 G<P><FONT color=#0000ff>int main(void) 2 S4 Y8 y* K: E% g3 o
{ ( a4 l% S) z5 b- G7 |4 l
char *dest = "abcdefghijklmnopqrstuvwxyz0123456789"; 5 _% |7 O+ A3 E8 A# k& F% Q
char *src = "******************************";
) E; H) B: k# P0 I8 l1 uprintf("destination prior to memmove: %s\n", dest);
_5 S# a3 f2 X% G4 `memmove(dest, src, 26);
" T5 ], H% j3 p; ~printf("destination after memmove: %s\n", dest); b, A0 r* n( x! E
return 0; 5 C4 X! ]' f9 o, C7 E; R4 c
}
- M Q: @4 y) W) v, R/ A# z2 |
1 y- @: O* \" _9 R n" L</FONT>' j4 r, y" q3 ]: k
</P>
/ c2 }! X" o9 r9 w- n, A+ p% F$ b<P><FONT color=#ff0000>函数名: memset </FONT>
U; X E+ R2 v功 能: 设置s中的所有字节为ch, s数组的大小由n给定
1 W# K ?% O3 [' f& p用 法: void *memset(void *s, char ch, unsigned n);
. f: u7 R2 |' r, w/ _" A; M程序例: </P>8 O8 M t& O4 b% w2 D* V# s
<P><FONT color=#0000ff>#include <STRING.H>- }( _) Q) q; e) R" ^0 }0 h4 d& Y
#include <STDIO.H>
, B; _% t; G# y% a( n; U#include <MEM.H></FONT></P>! R2 X g1 G3 C& T7 ^0 n) p
<P><FONT color=#0000ff>int main(void)
8 `8 w6 S4 h8 R3 O2 V+ B{
d1 p% |2 p6 L+ _9 j8 v! pchar buffer[] = "Hello world\n"; </FONT></P>7 R A5 d7 j8 o$ Y0 h; C+ x3 H
<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer);
' |/ I1 Y! P) T, m imemset(buffer, '*', strlen(buffer) - 1); 4 F$ r) J, H ]" Q3 c+ W
printf("Buffer after memset: %s\n", buffer);
4 W2 z2 _7 X' F* w0 O0 breturn 0; 8 x! j( i3 ~) K( d t1 ^/ L* r" q
} </FONT>9 o z& z$ {3 |7 v
; Y& Q4 l3 B! u: z
</P>
( f/ D& b# `$ c1 \- z) k<P><FONT color=#ff0000>函数名: mkdir </FONT>
( u* }0 h2 {8 [: J0 x9 p功 能: 建立一个目录 ! T2 w7 e. Y& M( K2 n: ?4 I2 G
用 法: int mkdir(char *pathname); 1 M+ m8 _, l- k' Y/ ?
程序例: </P>
$ N( ^- T7 }) e, ?& w<P><FONT color=#0000ff>#include <STDIO.H>
4 f1 S' g' \- C* S#include <CONIO.H>4 o" N$ i- N8 o/ O f- [! v
#include <PROCESS.H>! n3 Q i$ U% m: f/ u( w1 M. {6 x
#include <DIR.H></FONT></P>$ n( B* G9 g0 M, ?$ @9 l' K4 q
<P><FONT color=#0000ff>int main(void) $ K8 {) n: C: C& b( H
{ q* |" O# z) {% x6 H: h
int status; </FONT></P>( d7 M3 }) G: {' I
<P><FONT color=#0000ff>clrscr();
6 ?! H8 G8 Y6 A6 _status = mkdir("asdfjklm"); 8 @/ ^1 i( K$ g; q4 U5 e% _
(!status) ? (printf("Directory created\n")) :
, o ^& r3 \( E- m) ?(printf("Unable to create directory\n")); </FONT></P>6 |! v2 P% x) e- w
<P><FONT color=#0000ff>getch(); & I+ W) H: U7 c) P/ G% R; O
system("dir"); " w9 C: }' f! n( c) M. ~+ p1 g1 D
getch(); </FONT></P>
; s5 w( a5 f* u6 v<P><FONT color=#0000ff>status = rmdir("asdfjklm"); / ?0 c& L$ w) [) @! j9 @
(!status) ? (printf("Directory deleted\n")) :
+ Q2 q% e% X) R: X# Q(perror("Unable to delete directory")); </FONT></P>
4 _$ H* k) F: N/ \/ n$ M* t<P><FONT color=#0000ff>return 0; % E$ Q1 G- B* u+ u: [( W6 E$ u9 q( k
}
5 X- d' u5 N2 r; _
7 H5 ?( D( Y5 @9 E</FONT>
# d/ \1 R; F+ I8 I4 J! H2 Q</P>
) c1 L H/ n( p. v& ~<P><FONT color=#ff0000>函数名: mktemp </FONT>
0 A9 N1 I9 F: {% a. y功 能: 建立唯一的文件名
7 z9 f; M0 ?2 B0 a: l用 法: char *mktemp(char *template);
1 k. F! T7 h' C程序例: </P>
8 M5 z+ ~" A" ^- e<P><FONT color=#0000ff>#include <DIR.H>" o y7 _% _3 K
#include <STDIO.H></FONT></P>
7 d. g& b! a2 Y% y* \* d: l<P><FONT color=#0000ff>int main(void) - Z1 `, l0 Y1 ^1 {. Y4 r/ k6 v& k
{ & c) m$ y$ X" i0 R, Q5 a
/* fname defines the template for the . h# {7 s( S# F4 [. w8 ^; N
temporary file. */ </FONT></P>
5 G8 D a! ]2 j<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>/ L/ T! x# X- Y" T9 {: Y- ^' l
<P><FONT color=#0000ff>ptr = mktemp(fname);
- D! e' e# K" [. [& p% Yprintf("%s\n",ptr);
$ {: l2 A; K6 u V6 Ureturn 0;
) S; j- g* J2 o r. \}
9 P# w. d- X& ]# t* Q</FONT>; G3 J }2 P$ Y: J' Z8 d' o' r+ Q1 {
</P>' I: g* K" _+ j* Q. j
<P><FONT color=#ff0000>函数名: MK_FP </FONT>
4 d9 h: f T4 B2 I0 e* q功 能: 设置一个远指针
* R3 ~( Q5 r7 a$ O2 B2 W5 m用 法: void far *MK_FP(unsigned seg, unsigned off); # A* J. s! ^0 s# Q! v2 {
程序例: </P>2 E [' |9 c+ M' D0 R
<P><FONT color=#0000ff>#include <DOS.H>
2 L/ U8 S0 \9 M& k, H' R#include <GRAPHICS.H></FONT></P>0 z, X+ Z- o9 w$ ?; J3 L
<P><FONT color=#0000ff>int main(void) $ p; D* q+ \/ Z7 m
{
8 X* }, Z$ ^" Q6 Hint gd, gm, i;
M" V( M/ y" s: M/ U6 M. Gunsigned int far *screen; </FONT></P>
$ p8 X+ O0 @( h5 K7 |; z, ]% A<P><FONT color=#0000ff>detectgraph(&gd, &gm); % X( b# I2 ~8 I* b
if (gd == HERCMONO) 1 u* ?0 T& `7 l7 Z) X7 P' M+ C( _3 D
screen = MK_FP(0xB000, 0); ) V( b6 A* H9 W9 A+ ]' v
else
6 L- e. g/ @2 I$ C5 q$ ^screen = MK_FP(0xB800, 0); , ^* D5 O, |0 `/ P& a
for (i=0; i<26; i++) : |: e- x7 y2 X( J2 T
screen = 0x0700 + ('a' + i);
$ Q) ?% W& H3 U7 Jreturn 0; 3 l1 B% B" f, n# O; P
}
' t: J. @' Q* D9 s8 R</FONT># W- t1 v8 r3 H/ J2 H- G) p. y
</P>3 p. X3 B0 F' \( T* X
<P><FONT color=#ff0000>函数名: modf </FONT>
G3 l- ~( V' r& u功 能: 把数分为指数和尾数
( R6 d; s: j5 S- A用 法: double modf(double value, double *iptr);
, c) _4 e8 m% h5 E) n4 b9 d程序例: </P>
, }# \' k7 i- S" l' H<P><FONT color=#0000ff>#include <MATH.H>* c9 w! T3 ^6 j# K% y! K% a
#include <STDIO.H></FONT></P>- ]/ N" Z& g3 w' k& K
<P><FONT color=#0000ff>int main(void)
( ]7 v* ?; x. S8 v" {9 F. c/ Q5 s{
8 S! ]" J" o) s0 H) p" odouble fraction, integer; # R& Y: P& u, ?
double number = 100000.567; </FONT></P>
* C6 z4 v Q [. b1 K<P><FONT color=#0000ff>fraction = modf(number, &integer);
9 t; S0 p6 i9 l8 Sprintf("The whole and fractional parts of %lf are %lf and %lf\n", / Y3 m- Q0 Z: ^. b* \- J
number, integer, fraction); 6 k9 j& d: y. i+ }1 r9 c' z
return 0;
! [6 G# w. M$ M} </FONT>3 d9 f9 ^9 H3 d2 p) \: c- t
& `5 r7 D2 s" c$ m0 |' l& t</P>1 E$ y4 Y6 G# ^4 P
<P><FONT color=#ff0000>函数名: movedata </FONT>
# C3 \9 K5 ]% ?功 能: 拷贝字节 6 e$ k. M6 S x- P
用 法: void movedata(int segsrc, int offsrc, int segdest, m( [6 B$ B) n! |( W, H3 \7 o
int offdest, unsigned numbytes); ) ^2 @3 K6 T& s) E& `+ P- @
程序例: </P># l0 N$ ^8 f/ }/ S6 P
<P><FONT color=#0000ff>#include <MEM.H></FONT></P>9 a7 {) i7 h& L5 _
<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>8 d# x, S" z' o% ]" p! J( ?
<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */
7 b8 P7 Q3 q' i0 W5 j" Wvoid save_mono_screen(char near *buffer) 4 i5 H$ J3 b8 j$ U9 _9 [: @- v
{ 5 _9 q0 W$ V, G( R; @ v% x
movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2); , V& r4 }2 @+ P# R7 `
} </FONT></P>
1 n, [( V6 @1 I$ ^4 M% n) P<P><FONT color=#0000ff>int main(void) ; g: l- S' d4 _
{ ; l0 V' E+ j _" ~
char buf[80*25*2];
\3 X/ y0 P/ G: Y8 jsave_mono_screen(buf); + C0 I, F+ B5 }6 U8 f% } F
} 7 d; X, j. q1 X% l# i: |
</FONT>
" P3 L$ q" H3 ?# n</P>
3 j) u7 X J! U# T. y<P><FONT color=#ff0000>函数名: moverel </FONT>
) F* H1 j: [ Q5 T0 T/ f$ [( O功 能: 将当前位置(CP)移动一相对距离 4 r2 t, O/ L2 e* ^
用 法: void far moverel(int dx, int dy);
4 x3 ^$ V% d5 f! _0 r程序例: </P>
$ p6 ]& P, v5 u% ~1 d% X2 E" Z<P><FONT color=#0000ff>#include <GRAPHICS.H>; F/ `# g0 {" _( @4 E/ F* ^" Z
#include <STDLIB.H>
" J/ v& v$ L& }5 [% o#include <STDIO.H>0 C0 S# k% @- s- r
#include <CONIO.H></FONT></P>: s* n! M# c: i6 Z C k2 l
<P><FONT color=#0000ff>int main(void)
& b2 z5 b# L# {{
" J& ]# O8 g2 d/* request auto detection */ * k2 E4 k c4 b, ?, l3 y) E
int gdriver = DETECT, gmode, errorcode;
! b8 Y6 p; c# \, |char msg[80]; </FONT></P>
6 U/ ^7 }* L& r, u<P><FONT color=#0000ff>/* initialize graphics and local variables */
! |/ F' z) w6 C' v$ Uinitgraph(&gdriver, &gmode, ""); </FONT></P>( h% |6 x2 P. u" l* I- V* p9 l
<P><FONT color=#0000ff>/* read result of initialization */
" I" o: ~+ h+ U, N* xerrorcode = graphresult();
. t( M, Q3 i: u# S5 g8 T5 uif (errorcode != grOk) /* an error occurred */
7 e$ ^+ |: ], l e4 z" M{ 6 n l3 B) }% }$ t/ T6 a
printf("Graphics error: %s\n", grapherrormsg(errorcode)); ! _$ V7 c5 D2 M) }- A7 G3 w- }6 h* |
printf("Press any key to halt:");
. o- k$ j8 P% ~/ n5 q/ x( Wgetch(); ! v8 x3 j2 Q) a: I8 \5 r7 P
exit(1); /* terminate with an error code */ 7 u }! e6 }. U0 d& P8 a
} </FONT></P>2 ~/ B) _. O3 Y* h S/ ]' N/ L$ C
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
/ @& g0 g, M6 i4 [ Dmoveto(20, 30); </FONT></P>
! [. ^/ Q3 a0 c' L2 Q) D7 C8 |<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
1 P* K2 e$ S4 H; a' Kputpixel(getx(), gety(), getmaxcolor()); </FONT></P>
' ^! T$ \+ f" ~; \9 X<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
; G$ m: u0 _) u+ l# isprintf(msg, " (%d, %d)", getx(), gety()); ' c2 L3 P, O" x% L8 H
outtextxy(20, 30, msg); </FONT></P>) }- T/ ^4 ~! y8 ]9 o2 Z
<P><FONT color=#0000ff>/* move to a point a relative distance */
$ ~% K5 {. b* n. N/* away from the current value of C.P. */ ! J3 I: R; \# u( H
moverel(100, 100); </FONT></P> P. |0 t( R5 {
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
1 |0 m4 `5 h" kputpixel(getx(), gety(), getmaxcolor()); </FONT></P>
1 {/ i4 K6 D, |, e+ N4 n0 e! u<P><FONT color=#0000ff>/* create and output a message at C.P. */
3 n- P7 E. [; Tsprintf(msg, " (%d, %d)", getx(), gety()); % C& s2 `+ a3 ~9 Y9 f
outtext(msg); </FONT></P>
% Z/ y* Y+ p: S" P$ M<P><FONT color=#0000ff>/* clean up */
3 u5 t2 i' {$ L6 G) {getch();
3 D+ c d/ [3 R* N5 _closegraph(); 7 e# z& Y8 h) R$ D' t% h) k( H o% b
return 0; - _% z- N1 l+ l- {& k+ R
} ' {: A: p$ l& H6 w
</FONT>
' r% x' n* e! l! D7 j5 }2 R+ r</P>* ?5 D u% U8 ]6 z
<P><FONT color=#ff0000>函数名: movetext</FONT> 8 }' p- a' a+ }3 P' l- w. y
功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域
( @( Z+ \+ R& X, e# V* H- n用 法: int movetext(int left, int top, int right, int bottom,
2 ]$ ^) `" ^( {1 f2 R, S9 ~2 kint newleft, int newtop); ) d+ ]/ U9 s- x7 g4 v) @" y2 \
程序例:
; Y. P0 ^! J2 [2 \<FONT color=#0000ff>#include <CONIO.H>
$ T9 V# L# S C#include <STRING.H></FONT></P>
0 P3 ]3 B1 K5 T1 L2 g1 Y<P><FONT color=#0000ff>int main(void) 8 h: p/ S/ B$ D( o
{
# x8 D8 _# i: P0 Gchar *str = "This is a test string"; </FONT></P>
% C6 b" W) `! Y<P><FONT color=#0000ff>clrscr(); 9 a: [' W; d+ R4 i% W5 k2 [
cputs(str); 5 y$ |5 j1 V+ \# e r
getch(); </FONT></P>/ K. U$ ^; a J3 d3 l
<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10);
( m. H9 r; I& m8 \6 ^" t4 Xgetch(); </FONT></P>
. t5 e% \6 }/ J! g; H<P><FONT color=#0000ff>return 0;
$ S( o0 E; }* N* f% E3 s' v} ' ^0 e8 B9 l& t: x* Q
- Q+ p9 Q; n& e. o1 y- a
</FONT></P> f' j6 y! W& i
<P><FONT color=#ff0000>函数名: moveto</FONT> . N5 S( h) O3 p X
功 能: 将CP移到(x, y)
5 P0 M9 z) z( \- m$ l* E用 法: void far moveto(int x, int y); 4 V# [ ?! P, F! F4 R/ W/ M
程序例: </P>$ y! Y9 F: M$ y2 Z
<P><FONT color=#0000ff>#include <GRAPHICS.H> K% c1 }2 d( I2 V7 }& J4 @, _
#include <STDLIB.H>2 W# m+ `+ r6 \* h+ T
#include <STDIO.H>0 X! V5 t/ p$ x/ k; @0 [
#include <CONIO.H></FONT></P>% M7 w( _/ I# L5 b7 u3 ]
<P><FONT color=#0000ff>int main(void)
+ e2 Z2 w5 R6 Z1 b q{
+ L. j! d3 e; d! ], Q6 D+ |, `/ L/* request auto detection */
) d; I* M' h! w# N4 Vint gdriver = DETECT, gmode, errorcode;
# X% z, j4 _& q4 l# Z1 Mchar msg[80]; </FONT></P>
7 P2 p8 w6 p. S1 Z' W: M2 R J9 t<P><FONT color=#0000ff>/* initialize graphics and local variables */ : w9 s& C; `6 ?; F; \. H
initgraph(&gdriver, &gmode, ""); </FONT></P>
. |( e5 ]$ f3 C$ G<P><FONT color=#0000ff>/* read result of initialization */
" l% i$ x9 I2 a7 {errorcode = graphresult();
3 u! f+ [) `% ?9 m, bif (errorcode != grOk) /* an error occurred */ : b7 ~' r" S$ e; J$ M8 f( s
{
$ O0 G6 H8 A% W/ D$ ^% p8 _printf("Graphics error: %s\n", grapherrormsg(errorcode));
6 ]) B: I2 X/ M' G6 Z* x4 ^printf("Press any key to halt:");
# \1 _* T( i5 n6 Ggetch();
: V" n- I0 H" }+ Yexit(1); /* terminate with an error code */
' R% @1 o5 E$ S9 m/ v& {3 D} </FONT></P>
# Q0 G0 A* u% m. r1 w5 \1 h9 h<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
* ~; v" _ q6 j* C/ t! Z+ j8 @9 F |moveto(20, 30); </FONT></P>; Y0 y: h Q' g0 w
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ g& X% ~! }9 O1 X/ D8 \8 {
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>
, I( u# z( H+ [' K5 C<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ 4 ^. ^# [9 ^# g
sprintf(msg, " (%d, %d)", getx(), gety()); " G- G( `3 J) _6 H; [
outtextxy(20, 30, msg); </FONT></P>
, ^' ]4 }1 y! d# f4 j. a/ F& w F' r<P><FONT color=#0000ff>/* move to (100, 100) */
4 {0 d* |6 d" ^) p6 f6 e! t* Vmoveto(100, 100); </FONT></P>( Y! n* a0 W5 W
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
' ]. U% b: l6 U- i. w$ |3 E& sputpixel(getx(), gety(), getmaxcolor()); </FONT></P>" _ C3 Q0 K$ S
<P><FONT color=#0000ff>/* create and output a message at C.P. */
& y# _' }9 n. B0 w6 esprintf(msg, " (%d, %d)", getx(), gety());
) V7 _% ]0 q9 ?2 O- eouttext(msg); </FONT></P>
% K6 Y; z' _, H6 u- V5 {3 d<P><FONT color=#0000ff>/* clean up */
7 R; _4 Y! V' ?. d3 @. Y7 e+ agetch();
! N+ ]3 p S( O% q' [; `3 Cclosegraph(); 5 Q9 C; w$ `$ ^% J9 p) c
return 0; 7 O7 m9 I7 u- t& U
}
) n; Z1 i, C* {+ u* {/ G+ H</FONT>
7 ^: H$ o3 C5 n: B- O" ]</P>- t! K$ W/ [: n9 h( @! w a
<P><FONT color=#ff0000>函数名: movemem </FONT>
1 g! t+ E7 X( [" t功 能: 移动一块字节
1 F3 N+ w( {% p7 Q5 y2 E7 ]" } m用 法: void movemem(void *source, void *destin, unsigned len); 6 X: }, [! f5 {$ d
程序例: </P>0 Y+ y$ a1 [) Z; i- o, ?1 g
<P><FONT color=#0000ff>#include <MEM.H>& f. H4 s& W7 f) o
#include <ALLOC.H>" ^5 r# H/ t# I1 s6 p. ?( g- B
#include <STDIO.H>
" f: L3 {/ W$ q, \#include <STRING.H></FONT></P>
8 c( m7 |2 H( g<P><FONT color=#0000ff>int main(void) % W; Q X! Z% e6 q7 P& H/ o
{
# r$ q6 m% k( C2 Q. t8 Cchar *source = "Borland International"; * A! Y* e5 A! [- u: t
char *destination;
/ [5 s8 i/ d4 w6 u0 Iint length; </FONT></P>- b* e( \* X; T, c) Y% @5 c/ A L% k
<P><FONT color=#0000ff>length = strlen(source); l& {5 K8 Y& u' h2 f2 x. g8 f; e
destination = malloc(length + 1); # q/ v1 D2 e2 \5 |: T2 \5 E2 m
movmem(source,destination,length);
3 ]' H+ M; b- O/ Bprintf("%s\n",destination); </FONT></P>1 x8 F4 I6 q% n6 G* E5 X8 c
<P><FONT color=#0000ff>return 0;
% \3 F* U& u9 C: ]- `1 C A}
$ N. _4 S- }4 I' c5 W& m# J! F& N: P6 v/ @" ~/ e o- D! ?
</FONT></P>9 n/ l/ U( [+ m( W/ I: b
<P><FONT color=#ff0000>函数名: normvideo </FONT>
9 _4 b3 b/ [# k% G+ {功 能: 选择正常亮度字符
$ V R6 {5 R6 |' J j) l ?用 法: void normvideo(void);
* |: d D0 J3 B- q程序例: </P>! z9 {9 z% }# s0 i5 V
<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>
- Y+ j. d/ W$ N5 D* [- k% h& |<P><FONT color=#0000ff>int main(void)
0 }# d z3 J& r* i{
. j! c# u* z; k" cnormvideo();
/ o/ g O5 ]6 W( W7 U; W/ Vcprintf("NORMAL Intensity Text\r\n"); 6 c5 C" C \% d; `. g, @5 x
return 0; 8 D9 }; A2 u0 X
}
" K) L3 R U* l; v( f! u4 [3 m
</FONT></P>
$ O6 H& u- t7 Z+ E- { G<P><FONT color=#ff0000>函数名: nosound</FONT> $ G `7 n) z+ n1 z) q
功 能: 关闭PC扬声器
; P; {# } M5 L/ w2 e9 H! Y用 法: void nosound(void); 8 B* I7 ^& N% Y a+ S4 O2 @
程序例: </P>
1 t3 s- F/ X" [, q k<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>
* ]* F1 j3 a; p; w |1 k0 E+ |8 N<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity. ( d9 R3 b$ V/ U. U
This was determined empirically in Australia, where a new factory
7 V8 H0 e, J8 S+ ^generating 7-Hz tones was located too close to a chicken ranch: ' o# K$ P/ t+ Q
When the factory started up, all the chickens died. </FONT></P>1 L: _/ @. k9 W8 t" Z
<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone.
/ ~3 ?. R8 _1 c# ~- Q3 G. A*/ </FONT></P>2 D% _# Z q G9 f8 U& {7 D9 i
<P><FONT color=#0000ff>int main(void) $ o$ V, R, ^: I: R4 Q ?* W$ W. J! F7 l' b
{
2 L M4 _! ~# ^' o7 @! k% q6 isound(7);
" }$ R& c. ~$ u* ?6 w8 tdelay(10000); 6 f- V | Z3 T
nosound();
# Q" W' z' r. b}
) o' c, L4 e% T/ C0 {8 w) i</FONT></P> |
zan
|