- 在线时间
- 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># e' }. G. P: N4 G- r" T {/ g3 F4 D
< align=left><FONT color=#ff0000>main()主函数 E( ]* z+ \; N( N
</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某
& o% G; W, h9 ?& N: \' \: [个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 I/ U! v% r/ l7 [& |( J* G( H
在哪个地方, 以下几点说明都是适合的。 $ q3 x( A; I$ B4 ^* e7 G
<FONT color=#000099>1. main() 参数 </FONT>
0 r) B! ]# |! p/ T在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。
3 r `. g! x) v, @+ Y9 I* argc: 整数, 为传给main()的命令行参数个数。
7 x/ Y3 h; v* V* argv: 字符串数组。
* f; r; q0 t, i. ~在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0
$ b7 S5 _! B( m1 g" ~% q1 X以下的版本, argv[0]为空串("") 。
7 a3 H$ n8 `( n8 t2 S( f( Margv[1] 为在DOS命令行中执行程序名后的第一个字符串;
% w4 c! D. B% ?9 j( {. Jargv[2] 为执行程序名后的第二个字符串;
& J7 t6 Q% v8 e( [6 p9 a... : i# ] e2 z) _6 Y4 l4 a7 E
argv[argc]为NULL。 6 `" X) D8 r- y: T) \
*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符
# A4 |6 @. t' P, R串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C: ) g$ l$ \4 l# g7 l/ E+ Y
\TURBOC(对于PATH) 或YES(对于87)。 - T2 B, w" S5 [7 W& n$ y+ O
Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中
$ [- ?" @3 b, V, i- x说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序
6 x; K4 i8 Z+ b9 c9 a* i的局部变量。
8 s0 C$ Q+ M* P8 O3 I请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下
5 M1 V& Z1 d; ^7 P8 O# Q的例子:
: \- R# G% r0 t2 A8 P& O<FONT color=#0000ff>main() 7 l! g; j" M" ]/ O x, t% i
main(int argc)
6 k0 m6 u" R4 b s$ F/ u, @2 vmain(int argc, char *argv[]) 2 P" n& \, ?: G7 U; ^; O
main(int argc, char *argv[], char *env[]) </FONT>) T9 P' Q$ S, F$ y2 o) p# C
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不
0 z0 F$ Y" O0 K5 s: h用argv[]的情况。 . z8 N8 ]) F1 t+ t4 N2 S
以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
( ^# l1 C. i# H<FONT color=#0000ff>/*program name EXAMPLE.EXE*/
4 Z) `2 ~) T% }6 C$ G#include <STDIO.H>8 l) L m$ d) Q3 h- \3 j; Z
#include <STDLIB.H>% h0 m h3 j$ f
main(int argc, char *argv[], char *env[])
5 Z- m8 t/ i2 T; k, x( ?{ 5 w9 ~- C7 j/ `4 U, R1 Z( \' p
int i; ' Y, q+ i- o9 ~" o
printf("These are the %d command- line arguments passed to 9 ]. X. H) {/ E% y
main:\n\n", argc);
0 M% P; h$ ]3 L1 Xfor(i=0; i<=argc; i++)
: s$ S; r* X# uprintf("argv[%d]:%s\n", i, argv);
: d% {) u1 h. @0 S0 w3 fprintf("\nThe environment string(s)on this system are:\n\n"); + c3 H9 `+ D1 d) E7 k; C& {6 m
for(i=0; env!=NULL; i++) : H7 ?9 ~9 Y! v8 E) V" ]- q8 |
printf(" env[%d]:%s\n", i, env); 2 V4 W0 E9 a/ e4 r8 V( P9 B
} </FONT>8 `" H% D' s% `8 Z# t- ^* r% O2 x' P. [
如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:
: X- `% o' l' n5 KC:\example first_argument "argument with blanks" 3 4 "last but
4 E7 }. p; [( ^$ f( O6 h* yone" stop!
1 X& }. u3 N, K注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument e2 w- ^* w: p4 K* v+ Q3 A
with blanks"和"Last but one")。
* @9 ]2 q, V0 `结果是这样的:
1 Q" x+ m2 L2 L2 G) [# a' X' q<FONT color=#0000ff>The value of argc is 7
; ?4 h* {% `' w/ M. [These are the 7 command-linearguments passed to main:
; f' H/ A* G: [argv[0]:C:\TURBO\EXAMPLE.EXE $ U( V- u0 Y+ T. Z
argv[1]:first_argument
' @+ x: L3 H% L8 cargv[2]:argument with blanks 7 u4 x6 S/ G4 ~ O }3 Z
argv[3]:3 7 h. m- } N& A9 v5 v
argv[4]:4
1 z7 R/ r g( q; T. targv[5]:last but one 7 [5 j$ w9 E1 p6 j+ p1 W% ~4 n
argv[6]:stop! 7 p; a# y* q8 j# M8 K7 r v" K( {
argv[7] NULL)
* i( e; { r- f( S; AThe environment string(s) on this system are:
1 o- J1 }1 Y7 W- u8 x% s7 Y$ {env[0]: COMSPEC=C:\COMMAND.COM
/ G: _) b$ b4 t, c/ Qenv[1]: PROMPT=$P$G /*视具体设置而定*/
4 T* e6 q: F3 Q e3 C& x. T! kenv[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/ , X. j P% ^: C9 ?! x9 h6 |
</FONT>
- }3 b2 W: f2 J应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
8 m; e( t7 `& [' o括参数间的空格), 这是由DOS 限制的。 ' Y- X: t0 @8 R: D$ g3 B
</P>
5 i4 P( b- R& n7 {& M< ><FONT color=#ff0000>函数名: matherr </FONT>! p4 c ~' `$ ` i
功 能: 用户可修改的数学错误处理程序
7 K2 a. m! i4 H6 n0 D6 X# U6 U用 法: int matherr(struct exception *e); $ L2 i) j5 o$ q/ u' M$ I, v( p
程序例: </P>: {+ \% v" d% j. w
< ><FONT color=#0000ff>/* This is a user-defined matherr function that prevents * }7 l& ~8 L* Z. e7 g" G! Y/ z
any error messages from being printed. */ </FONT></P>
, G/ u3 h" P/ ~' X1 r< ><FONT color=#0000ff>#include<MATH.H> </FONT></P>, E7 i3 Z/ B% S6 k. X
< ><FONT color=#0000ff>int matherr(struct exception *a)
+ B+ I% q" y, J4 X3 l{
/ h" h8 g% N: K0 B6 O Dreturn 1;
: c! D1 y: S5 i0 x, J- s}
/ [: ^8 W3 G9 H5 O) s</FONT>
: a$ V G" N! I
) t! c- X: X2 x- H- _0 j</P>
# z9 w" b( t0 J: l9 J( X8 d< ><FONT color=#ff0000>函数名: memccpy </FONT>
* `2 t0 l+ G3 H. {. }# e+ X功 能: 从源source中拷贝n个字节到目标destin中 ' r* n7 |8 s3 t* i2 q. y! k
用 法: void *memccpy(void *destin, void *source, unsigned char ch, ) s3 ?- l: R# M
unsigned n);
f x, d2 _% F4 T9 }程序例: </P>
, U0 K8 G2 S: @* O1 |< ><FONT color=#0000ff>#include <STRING.H>4 V0 H E/ `: j* k* O* ~6 F
#include <STDIO.H></FONT></P>* f7 U8 o* }. ]6 c
< ><FONT color=#0000ff>int main(void)
# y0 h' T& Y2 V1 h3 l j9 r{ : H4 F& T: ~/ l" R- h/ A% ^6 f
char *src = "This is the source string"; 7 G! E. ]8 Z8 `5 y: ]: j
char dest[50];
% R+ F( o; e3 rchar *ptr; </FONT></P>
) U% T: [) X5 x- r1 ^* s1 U9 B5 I< ><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>$ J% F3 z# ^8 ?
< ><FONT color=#0000ff>if (ptr) 4 I; n* ~8 @8 }* G6 D$ t# p
{ 4 t5 g* N, V* G2 n
*ptr = '\0'; - O7 s. a% g/ d, y9 s
printf("The character was found: %s\n", dest);
$ m) Y- |* W3 w/ E} ) q" p) Q% A, i6 \: V
else : @0 j- i8 B N# b% I
printf("The character wasn't found\n");
7 b9 q3 v+ p; ~return 0; + X9 H u% U0 ]
} ; Y+ b! F4 z+ v, h5 v: o3 z v
</FONT>
; E9 \% P. N% p- n# P \* v* J</P>& Z$ N( F4 N$ E# ^' e$ s0 x
< ><FONT color=#ff0000>函数名: malloc</FONT> : ?) o- l$ m c
功 能: 内存分配函数
# T9 n4 S I6 g* v( q" G用 法: void *malloc(unsigned size); 7 H g {: X& ~
程序例: </P>
$ i$ n$ x( K: H* s< ><FONT color=#0000ff>#include <STDIO.H>
j0 K/ f4 D8 g/ I) T#include <STRING.H>
; q7 Z( k# X8 _2 ^9 j#include <ALLOC.H> U2 i& {: z4 n) `. c
#include < ROCESS.H></FONT></P>+ [- p" j1 c/ k- l, Y
< ><FONT color=#0000ff>int main(void)
% q8 w5 a& ~4 J1 R3 d{
; G3 V9 G# b9 X( l# o- X( Echar *str; </FONT></P>9 d( W2 U" y8 ^
< ><FONT color=#0000ff>/* allocate memory for string */
, u# t1 u1 Z2 E2 i8 j% w% B- f/* This will generate an error when compiling */
* }+ w# z! g" U' V1 i6 h6 e, d- l/* with C++, use the new operator instead. */
" v- }5 ~" l4 [" w, cif ((str = malloc(10)) == NULL)
+ a. B/ _6 Q. S' C3 c{ * Z O6 ]5 U x7 k8 t) t0 k
printf("Not enough memory to allocate buffer\n");
8 E5 G' G. c5 Q+ E2 W. ~3 {exit(1); /* terminate program if out of memory */ ! T- r+ y; B* H# g& F0 B: _2 [
} </FONT></P>* y/ _- }- E$ j3 w+ w
< ><FONT color=#0000ff>/* copy "Hello" into string */
' u( o9 d; C3 @( P. _strcpy(str, "Hello"); </FONT></P>
* ^. t+ k7 @2 h N< ><FONT color=#0000ff>/* display string */
5 M: G9 ~0 z! \- L/ _printf("String is %s\n", str); </FONT></P>" P; [# G3 O, E6 V" P' A
< ><FONT color=#0000ff>/* free memory */
. M# n5 I, q! ?0 o0 @free(str); </FONT></P>+ o% F6 [5 g4 G6 S% Z
< ><FONT color=#0000ff>return 0; ' Y" \$ d" r$ q5 i% k6 L
} * X- p3 @* s- f |
& m4 Q: x% x* F- K
</FONT>: K# q6 N1 ?: y+ r: a
</P>: J3 b6 b; M$ U# E- j
< ><FONT color=#ff0000>函数名: memchr</FONT> ! L, x7 o$ O- c+ q
功 能: 在数组的前n个字节中搜索字符
; e: j% o; _+ X; Z& o* }; r7 @用 法: void *memchr(void *s, char ch, unsigned n); , m- z. e: k0 T6 m- A+ V% \1 [* `
程序例: </P>
) ]$ C* U+ ?' Q; A< ><FONT color=#0000ff>#include <STRING.H>3 C5 u& V* [* L& q" V; k
#include <STDIO.H></FONT></P>2 B" d7 B3 f9 H' T6 f; n
< ><FONT color=#0000ff>int main(void)
7 l& y& c6 ?' x{
: a5 I- G7 b4 f0 [3 x/ [$ s1 schar str[17]; 3 V/ n! |) w4 v. q( B4 P. h
char *ptr; </FONT></P>( B, I9 x& Z. w. F
< ><FONT color=#0000ff>strcpy(str, "This is a string"); - ]1 D9 f& T3 ?& l( |. o) @0 L) ?
ptr = memchr(str, 'r', strlen(str));
: |4 F1 y$ m- Q4 L3 d0 nif (ptr) # J1 P: g! U: b7 m# C, T
printf("The character 'r' is at position: %d\n", ptr - str);
2 o' H, ]5 U) U2 F( i9 Celse
1 M. G5 \9 r9 c5 [# F; gprintf("The character was not found\n");
0 l3 {0 }6 u( x O: A! yreturn 0; * h: Z: q8 S6 |4 {. R* j R
}
. p8 D6 W& U& ^% k3 F</FONT></P>4 |5 S$ M$ K& g9 m2 k/ e" P
< ><FONT color=#ff0000>函数名: memcpy </FONT>) S& ~5 V+ v" N3 U
功 能: 从源source中拷贝n个字节到目标destin中 , Z) l. P3 o$ \ G
用 法: void *memcpy(void *destin, void *source, unsigned n);
1 }, T: @6 e0 {1 w程序例: </P>% {( T" b- z2 ?( q) Q
< ><FONT color=#0000ff>#include <STDIO.H>
6 Z. A' i) E. C- _0 w#include <STRING.H>/ ]% {& c! Z3 Q
int main(void)
7 ]3 l$ P- Q9 l( [4 G{
& j$ _; H$ V( c) B$ }char src[] = "******************************";
( A1 u9 Q# T/ t# |" Qchar dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709"; a! s5 C2 r! i n0 i4 q! D- g6 e
char *ptr; ( T7 T3 C _& J" E: Y" k
printf("destination before memcpy: %s\n", dest);
2 L/ D! K$ Y. F V( [ptr = memcpy(dest, src, strlen(src));
4 w2 l. @1 {9 D8 jif (ptr)
) H) p! k6 [% D7 yprintf("destination after memcpy: %s\n", dest);
- j6 F8 o0 H* F2 a9 t" Qelse
" L" x8 `: R- l+ yprintf("memcpy failed\n");
" r/ K, U, B9 o* }return 0; , @8 ?2 e l! e6 [5 X& d1 h3 e
}
# a6 Z3 k/ N8 V! `2 H</FONT>
' L5 L; p {# N0 S</P>2 i: ~' G$ g& j. N
< ><FONT color=#ff0000>函数名: memicmp </FONT>& a u7 D2 Y0 G. l6 Y" u
功 能: 比较两个串s1和s2的前n个字节, 忽略大小写
: ?& h5 Z- d, E用 法: int memicmp(void *s1, void *s2, unsigned n); 1 K- p+ q6 h2 u+ O% l7 Z5 g
程序例: </P>
9 e& ~0 `: ?! h0 o" ~' X, |< ><FONT color=#0000ff>#include <STDIO.H>
) L& I/ ]3 s0 u4 D#include <STRING.H></FONT></P>+ F0 S& i' @* i2 A3 b
< ><FONT color=#0000ff>int main(void)
1 W/ j/ j7 l* Z( |6 f* Q{
T! ^' l. r9 z) K( x* C/ w bchar *buf1 = "ABCDE123";
" i! g( J* e; bchar *buf2 = "abcde456";
! k. h5 O% B; e$ W T! o- n$ G5 Y( w! Dint stat;
4 C5 \0 b8 I' f/ istat = memicmp(buf1, buf2, 5); . A. a0 Z* o6 E
printf("The strings to position 5 are ");
9 k: Y4 J) \4 K3 A8 ~: Oif (stat)
% @- l3 M6 j$ \: eprintf("not ");
1 Y n2 X2 ]. y8 s) aprintf("the same\n"); * y# E4 j" q2 [; Z1 u! W
return 0;
. ~5 X7 y: `- [4 M, W# h& Y} 5 ^& j& J! Z* c$ F
</FONT>
# |# D0 i$ s$ N" G! ]4 T. `" u; H</P>
/ `0 X4 D) z9 x' c5 V* L3 m< ><FONT color=#ff0000>函数名: memmove </FONT>
9 {3 l$ u5 [4 o) ^' p功 能: 移动一块字节
|. a& L: ]8 J用 法: void *memmove(void *destin, void *source, unsigned n); # C% g* O$ b1 q% z7 E7 E: O K e
程序例: </P>$ h1 O( s/ E7 w; g: l; U z5 }
<P><FONT color=#0000ff>#include <STRING.H>) Q! ^0 O2 u) u0 D, _
#include <STDIO.H></FONT></P>
& p: C. n! a# U- [( v7 T% X# X<P><FONT color=#0000ff>int main(void)
- K+ h4 L7 [( G% h2 m& c, g5 i6 f{
: d( `2 P* m, y+ Q4 L5 ^8 _char *dest = "abcdefghijklmnopqrstuvwxyz0123456789"; : S' o7 z1 ^/ ~7 B8 E
char *src = "******************************";
' P8 S; _; Y: xprintf("destination prior to memmove: %s\n", dest); $ r; L7 y4 Q, V3 P3 ?( C
memmove(dest, src, 26); 6 }% G: _2 A1 U4 L
printf("destination after memmove: %s\n", dest);
: {( S& p# v, `0 areturn 0; ' G, C$ w9 O2 Y H. Y: I
}
9 B4 t7 f, k, d; W' D9 z
9 p* F' Y5 U; b* ]+ A</FONT>7 G( D! m4 E2 w8 X
</P>3 q+ X- d/ S$ `) Q4 s" @, l4 u
<P><FONT color=#ff0000>函数名: memset </FONT>9 s+ ~$ G* x+ |9 o( S. V: v0 U# Z, v
功 能: 设置s中的所有字节为ch, s数组的大小由n给定 m& r/ w/ ]3 n$ e$ p
用 法: void *memset(void *s, char ch, unsigned n);
! ~4 f/ @$ V1 Q! Q: _程序例: </P>
! ~+ _+ ?8 R1 H% }, L% P<P><FONT color=#0000ff>#include <STRING.H>
! [9 d, n* `' e5 j#include <STDIO.H>
3 C+ c& H& E7 f#include <MEM.H></FONT></P>
0 D. _$ l3 b) o: @, ~# u/ L% _<P><FONT color=#0000ff>int main(void)
' m, q% {/ q& r- g, E+ S' z# B{ 6 p% c0 w8 c5 i$ h
char buffer[] = "Hello world\n"; </FONT></P>
# P& o6 z1 G# p9 {1 C<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer); , w) [" @9 Y7 r
memset(buffer, '*', strlen(buffer) - 1); + q9 e; I X: Q, s& [# z, j
printf("Buffer after memset: %s\n", buffer); 6 E B4 |0 }" N% z8 } C `
return 0;
6 I' b7 N7 x4 }+ _} </FONT>& e$ O) A# a- X. [0 U: p/ K
: W8 b" K6 e R( p! @- k</P># V5 u4 @. L: D: p& w, a: h3 K
<P><FONT color=#ff0000>函数名: mkdir </FONT> g! N. A* z! {9 z; ~9 v( V2 Y% E% x
功 能: 建立一个目录 9 U3 z* `, o3 C% j
用 法: int mkdir(char *pathname);
2 j; S1 S1 a8 q程序例: </P>. L- g% C& X& K F" m( j3 h
<P><FONT color=#0000ff>#include <STDIO.H>
$ {. w% [; D3 z( F+ l: T' F1 \#include <CONIO.H>
% {. y0 z; z0 I; B4 A, d' c+ F#include <PROCESS.H>
3 ]+ T% _% l* U- x6 V#include <DIR.H></FONT></P>
; r8 q9 u. T, s/ J/ @, S<P><FONT color=#0000ff>int main(void) ( W3 U: ?, n) z4 d2 z
{ 8 B4 D7 b6 V6 ^' k
int status; </FONT></P>4 z; x$ P d8 A4 |7 q- {
<P><FONT color=#0000ff>clrscr(); : m# R# n+ z/ q* i# G& V6 X# [$ t, K
status = mkdir("asdfjklm");
* S- s0 D3 U* O! Q0 e& }8 _(!status) ? (printf("Directory created\n")) : 5 v/ R9 u8 v: v; z1 k9 t- b% R
(printf("Unable to create directory\n")); </FONT></P> W2 P0 ^" D6 p; g ^6 ~: O O/ Z
<P><FONT color=#0000ff>getch(); F3 s% X2 M1 R; E5 X5 }
system("dir"); . U6 m6 V9 @9 \, ~& P
getch(); </FONT></P>( b/ r+ p8 I2 f9 T
<P><FONT color=#0000ff>status = rmdir("asdfjklm"); 1 P6 L/ |# L7 z( @
(!status) ? (printf("Directory deleted\n")) : + s+ R2 y' B. a% Z! L, r
(perror("Unable to delete directory")); </FONT></P>
; c( a5 u, [$ I( D- i; O<P><FONT color=#0000ff>return 0; * U' S% J1 ^' o" {( i
}
: h% Y6 c2 z( [+ z5 x# q
0 z$ L- P. E9 u) r</FONT>
# a$ R3 @- ?6 g</P>% C; e" C1 G" e
<P><FONT color=#ff0000>函数名: mktemp </FONT>8 K Y' h; V5 v8 i+ }
功 能: 建立唯一的文件名
. V% v* f+ U2 b3 |1 j7 B' T2 L6 O用 法: char *mktemp(char *template);
. s' Q' y9 t" j( q- |4 P程序例: </P>, C1 O) A9 z3 r/ w1 ]
<P><FONT color=#0000ff>#include <DIR.H>
2 e1 q5 N9 x! z1 W7 f, p' I#include <STDIO.H></FONT></P>
! @3 v, l: d2 q# z0 J, Q9 A+ b<P><FONT color=#0000ff>int main(void) : |, i1 x/ _0 E, h
{
( o% ?9 p* M! {" f/* fname defines the template for the + U: O& L. X9 J3 ]& a1 R3 A. `
temporary file. */ </FONT></P> P! w3 U z8 G( l, d
<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>
/ ~5 G A/ [& L" F T2 ]. H3 ~<P><FONT color=#0000ff>ptr = mktemp(fname);
E3 A8 u8 Q. z: j! s: Rprintf("%s\n",ptr); * v" ` C% V; I) n! g
return 0; 6 [5 a% o3 h2 J& Y) D
}
5 M) ]: u$ [: r! c8 v2 h; I</FONT>
6 b# L7 J2 F* v* \* m</P>3 E/ ?* G1 e6 p1 e2 g! m
<P><FONT color=#ff0000>函数名: MK_FP </FONT>1 |6 @1 a* R$ ]
功 能: 设置一个远指针
A: P% o7 _( X用 法: void far *MK_FP(unsigned seg, unsigned off); 9 W$ {3 H5 M- J/ A( }3 V6 m
程序例: </P>1 M$ \; } ^' Z" S4 Z& \- c
<P><FONT color=#0000ff>#include <DOS.H>7 a2 U+ Y9 `+ A# N0 w0 P7 `; f
#include <GRAPHICS.H></FONT></P>
. x# R" v p( C1 P<P><FONT color=#0000ff>int main(void) ( [$ p) s3 I6 U" ~; r
{
4 }- w4 c8 b% O4 vint gd, gm, i;
6 _5 J, `0 E7 o; U% c Munsigned int far *screen; </FONT></P>
: p8 R2 t9 v" }& g* |1 g! f; P7 o<P><FONT color=#0000ff>detectgraph(&gd, &gm);
1 ]! i" y5 @) N T6 q5 T0 O# kif (gd == HERCMONO)
. X7 G/ k; J2 @3 m( @& [screen = MK_FP(0xB000, 0); : s1 [- C- ^2 [0 L2 ]" T3 _: E
else ) @" k$ T; t, G% }8 Z
screen = MK_FP(0xB800, 0); - }/ M, G8 p/ r3 y
for (i=0; i<26; i++)
/ |# I6 r1 O, r1 R& i7 }5 jscreen = 0x0700 + ('a' + i); ' z" |* o; _: L' K. y' J* _9 k$ J0 Y
return 0;
% J# @( R7 {2 j1 K6 ]8 i+ ]5 A} / y5 E" ]3 w4 Q/ E4 m( ^: q" r* u
</FONT> f) U5 j& S: {- g
</P># [5 t I3 ?- z T7 c: w
<P><FONT color=#ff0000>函数名: modf </FONT>
. L9 e9 B" E- G功 能: 把数分为指数和尾数
5 o" K$ I% E* t用 法: double modf(double value, double *iptr);
7 G+ H/ U3 j4 B7 z' j7 y- R程序例: </P>/ s. |; C3 f2 G0 p+ f
<P><FONT color=#0000ff>#include <MATH.H>
7 Z7 b1 m" E/ d7 c8 g#include <STDIO.H></FONT></P>
: q V i' |* m* h0 u9 z. V<P><FONT color=#0000ff>int main(void)
+ e0 }( G& K- d* i8 e! |{ , T- T% C& d: I
double fraction, integer; 7 A# J0 W8 f$ h. S' P
double number = 100000.567; </FONT></P>
# [5 _! |+ ^- t1 u! `' ]; |<P><FONT color=#0000ff>fraction = modf(number, &integer); ( i! d/ c+ v) T; A- |$ ]! `
printf("The whole and fractional parts of %lf are %lf and %lf\n",
7 {1 v7 o& g$ ]' tnumber, integer, fraction);
; n( g: d$ r, J! m. b4 P Y' ureturn 0;
7 ~ L- F6 [! e( ]} </FONT>9 w3 { H* Q9 Y: ]. u, x+ @
+ |) \" q0 J4 m p
</P>; W- u# t$ {. ~7 B: P: r( v
<P><FONT color=#ff0000>函数名: movedata </FONT>
, J9 r* m9 J3 ?2 b2 P# k功 能: 拷贝字节 8 x: |0 H) P" T
用 法: void movedata(int segsrc, int offsrc, int segdest, / T2 P7 c, ]2 J# u d# L' X" f
int offdest, unsigned numbytes); 1 Y" G' o6 `6 C5 D8 ^
程序例: </P>
/ t& z: n) x' O$ f<P><FONT color=#0000ff>#include <MEM.H></FONT></P>
3 z6 R" R7 ]" C) M, C1 t<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>! j* j$ J: O0 S+ I& S
<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */
7 O0 o" {; f9 ^8 J) tvoid save_mono_screen(char near *buffer) 0 a& ^1 i" U) s% z% r
{
2 c* L+ M0 {9 Z' a: M2 p% h% ymovedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2); " [) Q+ t* }/ n$ d4 Y) W( Q
} </FONT></P>
8 C8 N# n# a) n5 M& s# R<P><FONT color=#0000ff>int main(void) ' ~4 I$ F2 e) Q3 b
{ r& l' a: b v
char buf[80*25*2];
0 o! D* \. e" f5 Y) }$ Osave_mono_screen(buf);
% ~! M# N% D% N& ~: F9 H! b! N} 1 j: \; A; n$ G$ }& N4 I
</FONT>
& N6 {' A# Z, ]) l</P>
8 f3 T/ h: W* q2 K& K4 z K<P><FONT color=#ff0000>函数名: moverel </FONT>
2 Q+ r4 }! `% Y: {功 能: 将当前位置(CP)移动一相对距离
: s, P2 V* c8 H. b- [5 G用 法: void far moverel(int dx, int dy); 2 S$ X. S+ M6 M/ c! H
程序例: </P>- G5 r3 r) f1 q
<P><FONT color=#0000ff>#include <GRAPHICS.H>
! w! A! V8 @2 ]6 ]#include <STDLIB.H>
$ k4 s3 j1 r0 D$ f2 x#include <STDIO.H>" E# b* x* i" v( e2 U; F
#include <CONIO.H></FONT></P>' Z- a# V* o [
<P><FONT color=#0000ff>int main(void)
5 K0 b W, z9 G4 C{
6 d) t. p% E6 L& d3 \" o5 ^9 V/* request auto detection */ 1 D' G* u* c6 O, D3 g3 l: R
int gdriver = DETECT, gmode, errorcode; % r- l1 x* d' t6 U) l' N
char msg[80]; </FONT></P>* ]0 o' C& s; P9 R/ ?
<P><FONT color=#0000ff>/* initialize graphics and local variables */ ! H9 u3 Z) _% b' ~) b
initgraph(&gdriver, &gmode, ""); </FONT></P>, s5 v% c9 l2 ~# H
<P><FONT color=#0000ff>/* read result of initialization */ 2 o* F# ]. r: R& H( u
errorcode = graphresult(); 3 w) k! Z& {' L) h* A8 Q; R
if (errorcode != grOk) /* an error occurred */ % U) n ]# g$ F# @" A1 Y+ t
{ 6 Z4 p( J% P% y, Q! K8 u8 M5 h4 q
printf("Graphics error: %s\n", grapherrormsg(errorcode)); 2 Q) ^+ \. }1 `& e1 i& @
printf("Press any key to halt:");
+ } y" G+ Y1 z. m1 o3 u `9 Ugetch(); , w4 ^# z6 l6 k% V4 u
exit(1); /* terminate with an error code */
+ Y: P% b1 g# k4 C} </FONT></P> F. D8 z* o$ S7 N9 f
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ ; B* V/ ]* Y9 p# t2 j' @5 X% G& C
moveto(20, 30); </FONT></P>
$ p! x& G R( V" c' h<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ ) c7 w- S3 s, G# L1 @5 N1 q6 E6 x! D7 F
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>
' g+ P+ [. r; L: j4 e+ p<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ 1 w, L* P! c; `6 j" X) E
sprintf(msg, " (%d, %d)", getx(), gety()); " r, W- ]/ F, c8 F1 @
outtextxy(20, 30, msg); </FONT></P>
. ^$ r' M! j7 Q. i8 d& f% n<P><FONT color=#0000ff>/* move to a point a relative distance */
; E) g/ p# D% a" l" T/* away from the current value of C.P. */
* z4 Z1 Q+ N4 b# vmoverel(100, 100); </FONT></P>) q9 A9 B. Z! F) W3 h
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ ; Y6 Z) k9 h6 [; j! c# [
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>2 ] e8 R( U0 ? S
<P><FONT color=#0000ff>/* create and output a message at C.P. */ # ?" X( Q- A& s0 o
sprintf(msg, " (%d, %d)", getx(), gety());
& ]6 q; M+ Q0 x. l2 y& h8 f9 n3 h; Mouttext(msg); </FONT></P>' n8 C0 f+ z% U
<P><FONT color=#0000ff>/* clean up */ 6 x! y7 E3 N% k, ?6 F
getch(); 5 C8 H1 Y1 w2 b& T8 q3 f7 ]& k
closegraph(); $ [( t( s3 }2 w% S, Z
return 0; 4 Z- b: p( A7 M; `/ f4 c$ h
}
8 q- t) k/ Y; z</FONT>
+ E, n d# F. B+ q$ G& I</P>8 O% n) w7 }; u5 k* L- @; Y
<P><FONT color=#ff0000>函数名: movetext</FONT> 8 y7 N, n3 @3 }# ~( z d2 x+ s$ S
功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域
: t. x: L) c- _- C0 V4 w' n用 法: int movetext(int left, int top, int right, int bottom, . z9 O1 P1 N9 _
int newleft, int newtop);
& H6 j: U* A1 }& i0 W8 R+ \程序例: % u0 J2 S; Y6 h
<FONT color=#0000ff>#include <CONIO.H>
m/ Y* q0 H( z; h# K. M: \% ]3 l ^3 O#include <STRING.H></FONT></P>
9 M; Z; q ?& b6 P# c<P><FONT color=#0000ff>int main(void)
* f- c5 s0 W1 d( E7 Q \{
6 v5 ^4 V0 v7 Y9 Q) Tchar *str = "This is a test string"; </FONT></P>
- J) q$ m2 k* n- |) @# w8 Y1 {! Y* R<P><FONT color=#0000ff>clrscr(); / m2 b% D. t! `0 [+ o
cputs(str);
- ?. A4 s/ U/ h) S3 C8 I2 egetch(); </FONT></P>9 \* m6 `, L+ N& D) ^, x
<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10);
0 \, I1 o- W9 }4 Ugetch(); </FONT></P>% k2 G7 ^7 J8 a+ p
<P><FONT color=#0000ff>return 0; ; x: \* z. K8 G
} ( ~( L0 N1 ~9 @
" X/ G {' T' R4 @4 v) X' J8 Q</FONT></P>4 O. W. j- Y) c- `6 c
<P><FONT color=#ff0000>函数名: moveto</FONT>
. V2 _2 V! Z- G3 D, t5 K. Q功 能: 将CP移到(x, y) & s C8 S; o b( T9 J# S& j+ p
用 法: void far moveto(int x, int y);
) [: f6 ~. X2 l6 [' ?4 f9 ?程序例: </P>
q7 F5 h- L$ W7 W$ E5 r+ S( v" A9 t<P><FONT color=#0000ff>#include <GRAPHICS.H>
" m2 t) p- D! G: H#include <STDLIB.H>
& K& s4 i' k6 s: e0 z1 @9 p q! e#include <STDIO.H>: ]6 v! s( e$ h
#include <CONIO.H></FONT></P>; q" S; l3 S) J0 m
<P><FONT color=#0000ff>int main(void) * }% w6 P# T: Q# R
{
& T1 B" o0 u$ \- x9 k/* request auto detection */
$ U* g4 J8 e7 Kint gdriver = DETECT, gmode, errorcode;
: g; {! @9 h! G! Qchar msg[80]; </FONT></P>
2 \- t1 e3 c5 x- U' o- b<P><FONT color=#0000ff>/* initialize graphics and local variables */ . S Q8 m1 K* k' x: _
initgraph(&gdriver, &gmode, ""); </FONT></P>
3 I' b6 c6 k0 k! m6 ^& t<P><FONT color=#0000ff>/* read result of initialization */ * t5 F7 Q/ C* V* K
errorcode = graphresult();
. p$ W5 }' t3 R+ b t! h/ o4 R' iif (errorcode != grOk) /* an error occurred */ . Z, M" g* \0 Y7 [
{ c2 A! \! Y+ N
printf("Graphics error: %s\n", grapherrormsg(errorcode));
c6 j8 m Z4 v/ F4 U0 ]' tprintf("Press any key to halt:");
' i2 d( B. i c- Q) J3 J+ Ugetch();
- W- `+ V! R. Z& @( o1 Wexit(1); /* terminate with an error code */ , s8 w1 _/ m6 |; M5 X
} </FONT></P>( {- A) a. K @1 q: Q
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ 3 l/ z2 F; H. P/ z
moveto(20, 30); </FONT></P>
# H8 }5 A- l8 P1 D. j8 ~5 \# V* H<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
1 d' u. G% ?4 @/ l9 j$ R9 Dputpixel(getx(), gety(), getmaxcolor()); </FONT></P>/ s7 L1 f3 M( u5 c1 z
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
( H0 K/ o5 Z$ y# ]2 r0 g/ U6 C6 r# c2 zsprintf(msg, " (%d, %d)", getx(), gety());
' I j3 X. V; G+ C% K+ Vouttextxy(20, 30, msg); </FONT></P>
$ R7 k) z: t7 _% T/ z4 S<P><FONT color=#0000ff>/* move to (100, 100) */
+ Y7 Q5 d' j4 a$ Q/ Umoveto(100, 100); </FONT></P>- S4 S3 P4 |% R: a0 I) |% T* Q
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
- u3 D8 Y5 ]+ O. N! Zputpixel(getx(), gety(), getmaxcolor()); </FONT></P>& Q; w* g. ~+ Y
<P><FONT color=#0000ff>/* create and output a message at C.P. */ # u. N8 {, `+ L/ E
sprintf(msg, " (%d, %d)", getx(), gety());
) q' |) l6 S! ?4 H9 u2 Qouttext(msg); </FONT></P>
+ r8 p) {# W+ t6 N) E: H<P><FONT color=#0000ff>/* clean up */
/ X) C+ Y& W, _1 Kgetch();
0 s# \$ z# I+ g& Gclosegraph();
2 d# D. E8 J# t; K. I( i1 areturn 0; & D% p& s9 b0 v! @0 A9 o
}
5 [' [6 I) R1 P</FONT>3 {2 j3 G( i1 O- L, }
</P>
, A( w X# j( @- W$ I<P><FONT color=#ff0000>函数名: movemem </FONT>
" }9 U3 h, U' ~1 C功 能: 移动一块字节
. b8 m' t$ j" q2 ^& r! @用 法: void movemem(void *source, void *destin, unsigned len); * M5 T3 K: Q* m0 I- Z' [
程序例: </P>
+ S; ~* l% I: U& b& U# `<P><FONT color=#0000ff>#include <MEM.H>
: U0 Y3 [2 q9 V1 ]; q#include <ALLOC.H>
9 l. O/ A! U) p5 R#include <STDIO.H>
6 m& m( P& c, A4 r#include <STRING.H></FONT></P># t) v x( u! ~: P' ~! n; _
<P><FONT color=#0000ff>int main(void) 7 F+ F" M, O9 `' C5 _ o
{
2 z* w( o6 [3 G/ d' echar *source = "Borland International"; , J' ^( L9 P+ E8 U4 C# b n9 I& B
char *destination;
' N) Y" k# Z* E+ j, f1 D* P+ I5 v* iint length; </FONT></P>
/ z) X' E8 x1 c, p8 s5 ^* Y2 g<P><FONT color=#0000ff>length = strlen(source);
' u+ h0 N$ l K6 |1 v: odestination = malloc(length + 1); ) t, G+ Z2 V; q3 k4 B
movmem(source,destination,length);
# H% D+ h+ t l9 _8 g; Oprintf("%s\n",destination); </FONT></P>
% C% ]% B( `6 G! u, _" C<P><FONT color=#0000ff>return 0;
7 O' D( ?& z$ X+ ?3 J: P# ?}
5 v9 Q$ j# R0 d" T' e+ B# n2 r2 B6 W) t: y& k" r9 @6 G
</FONT></P>
0 X" A' g2 M* b) l<P><FONT color=#ff0000>函数名: normvideo </FONT>
0 x9 W7 ]8 f' q- |6 M, ]功 能: 选择正常亮度字符
# M+ j p, S2 s+ q用 法: void normvideo(void); : N; [, l: A; F9 a
程序例: </P>
5 u$ i6 e' U) {9 n$ s' A( e& J<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>
. W y7 J4 g7 a( S) F5 _3 ~' ~4 k<P><FONT color=#0000ff>int main(void)
2 E9 }4 V/ D0 H{
2 ^( Y/ r2 M4 c! X" n1 m& f1 anormvideo();
4 Z' C0 d2 g8 ]) v# O8 [cprintf("NORMAL Intensity Text\r\n");
" W: w. Z$ |; b( {5 Freturn 0;
6 o5 X) S! h$ ^" \' g! e* b. H, N}
7 d2 u& S4 w3 z9 j! M: i/ F
2 D/ s) S4 t- }9 V; @# A5 z- ^# u</FONT></P>3 _% S. m5 B, e
<P><FONT color=#ff0000>函数名: nosound</FONT> 6 i% ^+ X4 {6 ]! @8 _- Y4 _- x* s
功 能: 关闭PC扬声器
+ X7 i H7 b9 Z用 法: void nosound(void);
: R) {/ Z! P h: X程序例: </P>
7 I. L" ^( T5 e<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>
2 v( ~5 r, z: ^8 l* k. D$ g" [<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity. ' ^+ U& p! F' c/ u& L
This was determined empirically in Australia, where a new factory * ?1 |0 \: N# c, Z
generating 7-Hz tones was located too close to a chicken ranch: 5 o! u3 N1 E$ d* s, `: R1 _% h
When the factory started up, all the chickens died. </FONT></P>% ?' x5 ^; C! S) v" ~+ b1 _
<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone.
1 b. N+ z% w* R. c# N*/ </FONT></P>. D k8 ~4 J% }5 [! O
<P><FONT color=#0000ff>int main(void)
+ Z3 ^' g1 m& s) ~# k/ H{ ; [2 {- H2 o/ x. f& t; M
sound(7); ' y2 D) C) j& h# c' @+ x
delay(10000); ) R+ \5 |$ A2 K2 T
nosound(); . G$ e# n" ]& E& t% ^) i" W4 c
}
# c' O( K+ m3 P9 p+ ]</FONT></P> |
zan
|