- 在线时间
- 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>: ~, D4 |/ Q8 a. g2 d+ q; @
< align=left><FONT color=#ff0000>main()主函数! T) ?; r% g5 ^% N
</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某 9 w( K K2 b# h8 h* o
个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放
2 N- U$ M1 `/ o# U在哪个地方, 以下几点说明都是适合的。
# l1 J3 k$ {8 p% Y7 a' M<FONT color=#000099>1. main() 参数 </FONT>6 y; W q! \, o; h
在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。
* x: D) h* `0 U0 L! Z# i" @* argc: 整数, 为传给main()的命令行参数个数。
: n% f$ _# U" K0 w8 W* argv: 字符串数组。
) f8 o2 N, r" w' e6 b" T! L+ O: ~在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0
- I0 _2 j! \2 n- ^以下的版本, argv[0]为空串("") 。
( \" y2 a& J0 h7 S: q! Q; Fargv[1] 为在DOS命令行中执行程序名后的第一个字符串; . ~2 G+ U4 l: r% |3 \7 E
argv[2] 为执行程序名后的第二个字符串;
4 R, @; C# x' q3 L: K... 1 _1 J- K6 _8 J4 Y. Z; U8 }
argv[argc]为NULL。
3 S3 ~! y7 Q. [; j" b2 E8 ^*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符 ~& {7 n, R* u
串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C:
) w# X9 [3 b+ M, A1 \: K3 p\TURBOC(对于PATH) 或YES(对于87)。 . \* d" ^0 t7 g; t9 O% l
Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中
5 v( j! R8 @9 E说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序
* O3 V9 n( B, N. i' {/ f! W的局部变量。
: W2 L+ W6 T) n1 f/ v; j9 ^* W请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下 9 j4 _' `6 I1 M: \& G: k5 T
的例子: + X/ H6 O: r. d9 O' L/ ] ?
<FONT color=#0000ff>main() ! X& h2 B% {3 d) p+ r j4 n
main(int argc) ; Q0 W" e2 _- z$ d3 u7 R- y
main(int argc, char *argv[]) / d$ C6 g1 R4 `: X. A* W$ ?. T
main(int argc, char *argv[], char *env[]) </FONT>$ j2 P P9 G0 g5 y1 E4 U `
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不
- T; ]: W0 E2 V, A, |8 [) X用argv[]的情况。 : d6 F/ {' x3 Z; o8 r3 B
以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
, v" w. f0 P$ ^3 H' Q2 j+ ~<FONT color=#0000ff>/*program name EXAMPLE.EXE*/
$ a/ w+ G2 z _. G/ e# M#include <STDIO.H>2 s X( e4 s( [0 |5 \' A
#include <STDLIB.H>
: c# y. l4 [9 x8 {main(int argc, char *argv[], char *env[]) 9 V9 g8 x" `$ j, z
{ : X. x- x/ |5 _/ D; S
int i;
. L4 a. x% \0 hprintf("These are the %d command- line arguments passed to
0 m; N5 A* _: U5 J$ Vmain:\n\n", argc); / Y: ^, c; ~7 E! ?7 b }! Y
for(i=0; i<=argc; i++)
* l4 p; d" l& h- Xprintf("argv[%d]:%s\n", i, argv);
3 S2 R! u+ j$ c/ T2 C) ~: q6 Lprintf("\nThe environment string(s)on this system are:\n\n"); 5 h* Z* Q3 L- k- h+ J: g! ~
for(i=0; env!=NULL; i++)
+ p( H% {- g9 Iprintf(" env[%d]:%s\n", i, env);
" P0 \! w9 _* Q} </FONT>
: y6 C7 M2 B& T( d2 b/ ?如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:
8 p5 a7 @6 I* ?8 S* l6 z; j ?4 oC:\example first_argument "argument with blanks" 3 4 "last but
3 S9 t' H6 |2 Z' L; j/ A* cone" stop!
& x: l% f/ j8 m注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument
7 l4 p0 q+ i) n1 v5 b* u9 Twith blanks"和"Last but one")。
4 M$ u w0 L3 C结果是这样的: 2 D3 Z* D% S1 B! a5 u7 F
<FONT color=#0000ff>The value of argc is 7
$ i. ?* ~' L- ?( ~5 ZThese are the 7 command-linearguments passed to main: - U/ p& K! P. h# V' M" U% r
argv[0]:C:\TURBO\EXAMPLE.EXE + ]4 k- ?: u& F: B
argv[1]:first_argument
7 h. v% O7 q9 o- w- vargv[2]:argument with blanks
9 u T( ^5 X! {. kargv[3]:3 5 _8 _+ e9 \: z7 J! l: G) X
argv[4]:4
6 G' a/ g5 ~; p6 n' t. X& Fargv[5]:last but one / \8 f3 ]2 n4 K3 t/ t1 A$ R
argv[6]:stop! ( {6 H& D: K. z, O9 z
argv[7] NULL)
4 m$ W% }3 ^ oThe environment string(s) on this system are: 4 \ D% g8 j, K& O. X% B+ v3 I6 ?
env[0]: COMSPEC=C:\COMMAND.COM : @1 S7 y! F% s- ?) f2 d. W' F+ U
env[1]: PROMPT=$P$G /*视具体设置而定*/ ' f ^ ~. `4 {! U0 c
env[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/ 3 x; B; M8 T3 C0 H
</FONT>
8 t. I3 I6 |$ R+ T0 `应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
3 t0 Y9 @9 r3 o b. e) ~括参数间的空格), 这是由DOS 限制的。 5 s# t1 t7 x, n8 D6 k2 C
</P># B- V' A* Z C+ ^/ v( |. Z/ @# p
< ><FONT color=#ff0000>函数名: matherr </FONT>& ^3 `4 {# K: t7 S: P$ \
功 能: 用户可修改的数学错误处理程序 _6 W# ?7 Y. h1 l0 F+ q9 z
用 法: int matherr(struct exception *e);
4 |* H: H y+ @1 I- B程序例: </P>! h6 b0 d, O7 m9 B* z% s
< ><FONT color=#0000ff>/* This is a user-defined matherr function that prevents " i! @1 |, `- i( y. M7 h# G% { v
any error messages from being printed. */ </FONT></P>2 t$ d4 i# G+ h1 e# E7 E& |9 [1 N
< ><FONT color=#0000ff>#include<MATH.H> </FONT></P>/ O4 s( J" f) C, Z" ]$ O3 G
< ><FONT color=#0000ff>int matherr(struct exception *a)
9 f, D$ t6 `. s{
X# p- `5 \1 n8 l# areturn 1; ; p! ^, R; }* b! B( w: ?
} " C, H$ K# D0 ]; G* ^
</FONT>
% V) W, _9 A, g# w' s8 R5 W- s" y
" j0 @' C8 W- ~6 s9 q</P>
& }6 Z% R- |. O0 ?- o+ R. r< ><FONT color=#ff0000>函数名: memccpy </FONT>' \% a4 m, e! @: X
功 能: 从源source中拷贝n个字节到目标destin中
2 ]& ~ E: u3 x N) U用 法: void *memccpy(void *destin, void *source, unsigned char ch,
; i) E0 @$ W$ l8 J0 eunsigned n); 3 ~; d. P3 M6 b0 I
程序例: </P>
! k7 [/ |5 t) T- a0 o1 H! l- b< ><FONT color=#0000ff>#include <STRING.H>' [6 b1 A! W/ Y5 d+ K! }
#include <STDIO.H></FONT></P>
+ o" k1 m) t2 @< ><FONT color=#0000ff>int main(void)
! u, Q# ? }3 P [" k{
" b. U% D) R" `+ qchar *src = "This is the source string"; - m8 X& v. q" Z7 E: ]7 k. Z, ]0 S
char dest[50]; & I7 b2 Q* O G) c$ o8 j" o- b& y3 P
char *ptr; </FONT></P>
' I" a! j! b7 c1 N< ><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>
% Q' i4 F0 C2 J* E3 f1 {< ><FONT color=#0000ff>if (ptr) % v) N3 V* k0 C" ]0 s; w
{ 0 }& ?2 z$ G& r* A9 t7 U3 } B
*ptr = '\0'; 6 O, U) I) i" z
printf("The character was found: %s\n", dest); & @2 h r( v3 s+ y, m
} - u' M4 F& f0 d( `% ]
else
! [, l9 G8 n6 yprintf("The character wasn't found\n"); ' f' M5 I4 U5 x3 C+ X6 P/ }
return 0;
0 ]3 y4 D* c3 m8 N$ z( s& Z}
# B: I- D, X; {</FONT>
4 B- j: y2 c/ t, u* b& z</P>
I; t) M6 j2 M: i8 O+ S< ><FONT color=#ff0000>函数名: malloc</FONT> 1 {+ S/ V' ?; M
功 能: 内存分配函数 ( C: Y" z' ]0 `
用 法: void *malloc(unsigned size); ' i3 \/ }. y7 B- Q
程序例: </P>$ m) P u" j) Q) T2 w
< ><FONT color=#0000ff>#include <STDIO.H>. k" M" d+ G% ?7 D: c; ]2 K
#include <STRING.H>
" e( g- H& T" e6 B* D#include <ALLOC.H>/ b" U, r% ? G6 k$ O4 ^3 ^2 ?1 h+ E
#include < ROCESS.H></FONT></P>
8 {* L6 l: e4 X. {3 I. K< ><FONT color=#0000ff>int main(void) , `! W4 K. E7 i( M% l. w; ^
{
; M, U) J8 D4 w* h, ychar *str; </FONT></P>) @) Z+ o9 V+ Q& q9 L
< ><FONT color=#0000ff>/* allocate memory for string */
9 l! C8 D2 H% ?1 ]1 l$ ^, w4 m8 o5 e/* This will generate an error when compiling */
" j+ B, ^; I5 w' e1 a/* with C++, use the new operator instead. */ + {) e9 b5 _! J7 J3 a' _8 H
if ((str = malloc(10)) == NULL)
4 n, |4 H$ H. t9 ] J# ?{ + e8 Y( F3 K6 d: S. u( S) k& B
printf("Not enough memory to allocate buffer\n");
: f8 L: L6 o) h$ l/ Gexit(1); /* terminate program if out of memory */ 9 x. C9 ~% Z1 @' S
} </FONT></P>$ e- y/ g! H% [3 w
< ><FONT color=#0000ff>/* copy "Hello" into string */
& X: t- r, ^ r5 p6 A8 c5 }strcpy(str, "Hello"); </FONT></P>
1 m% l) S% p. r: M! }* }1 X< ><FONT color=#0000ff>/* display string */
/ R! E! n. {0 Q# iprintf("String is %s\n", str); </FONT></P>
& C: x/ i+ L/ e< ><FONT color=#0000ff>/* free memory */
5 B$ q) e/ \2 } yfree(str); </FONT></P>
c+ o5 i# v# o, H% b< ><FONT color=#0000ff>return 0;
9 N; }/ M, L! e8 k S}
/ e" U# s. I2 _
7 {6 @8 O9 ~; P2 w1 l8 }</FONT>
3 D. f. G, ]$ p5 ~4 Q</P>
; }, N5 x2 [! G" A1 m4 w& n5 E$ K< ><FONT color=#ff0000>函数名: memchr</FONT> * \ N) P, W9 f. f3 z9 I
功 能: 在数组的前n个字节中搜索字符
9 u% Z- N1 @$ W5 T用 法: void *memchr(void *s, char ch, unsigned n); ! K+ G& t4 e; F# K0 I" f4 e2 D. j
程序例: </P>
7 _) V, O) a, i7 P k! r< ><FONT color=#0000ff>#include <STRING.H>
: F# Y3 Z% W( g/ A- O9 D+ o1 ^#include <STDIO.H></FONT></P>' N& o0 |% \1 U( Y% {4 x
< ><FONT color=#0000ff>int main(void) . o# w; Q1 o$ O- _; S
{
- z4 H1 W/ o0 F' D) o e( \char str[17]; 5 s9 ~) ~6 d8 T" ]! u5 v! F
char *ptr; </FONT></P>
' ]# `8 @5 h ?1 V< ><FONT color=#0000ff>strcpy(str, "This is a string"); % B; b Q* G4 Z; K0 P9 E; ?( r
ptr = memchr(str, 'r', strlen(str)); ! C( V# a3 h8 Q G" Z ?
if (ptr) 1 P' C9 Q; F6 a7 }2 D. P
printf("The character 'r' is at position: %d\n", ptr - str);
. \; X, O: W! @2 d+ R2 Velse 0 H3 n: b0 b- ~' X0 d
printf("The character was not found\n");
- x! c9 i5 c# ^* Areturn 0;
8 k: Q+ S% p8 Y2 E% ~( ^}
3 }- B, J; e0 K. r</FONT></P>
) _& `/ V1 A) M! q< ><FONT color=#ff0000>函数名: memcpy </FONT>
7 e5 G% j# |2 y* K" h( H: m1 A功 能: 从源source中拷贝n个字节到目标destin中
8 j$ o, q' q, w+ ~用 法: void *memcpy(void *destin, void *source, unsigned n);
" r7 `& @% V- v* ^0 d程序例: </P>
K$ V. w2 |2 _" j5 [< ><FONT color=#0000ff>#include <STDIO.H>2 a7 c8 J! [1 o* {* y5 ?, l
#include <STRING.H>
- x7 Y3 C- ~4 oint main(void) # L3 Y+ r( e# \9 \- O9 @
{ 9 A5 B$ r* r8 ^7 G% v
char src[] = "******************************";
* D: C/ p z! q3 F& n$ i' qchar dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709"; 1 F; U% `1 N0 |; b% J/ O. ]
char *ptr;
9 _7 R" C1 \+ [printf("destination before memcpy: %s\n", dest); " r& x: J' w: A+ o/ O
ptr = memcpy(dest, src, strlen(src));
V0 g2 c7 j5 w3 ^3 a- Pif (ptr)
2 ~: |( I. n4 g, Wprintf("destination after memcpy: %s\n", dest);
% p) c, e% \6 \: b; k/ f8 yelse : k) N2 Q$ I4 J# U4 l
printf("memcpy failed\n");
* S7 z* N6 @0 v; ^: m5 J8 s; S1 Hreturn 0; 7 o+ N8 y6 X, M
} # V9 E; h- m- k7 y d u
</FONT>* f+ n, n J( Q' ^
</P>
, @5 X+ D; R2 \2 _& g- f! o< ><FONT color=#ff0000>函数名: memicmp </FONT>
y+ _, J+ B6 v9 W7 t; T: P: s功 能: 比较两个串s1和s2的前n个字节, 忽略大小写 + _+ l* \3 R# l2 c
用 法: int memicmp(void *s1, void *s2, unsigned n); * z; q: @; u c4 N' X& `
程序例: </P>6 e d2 e+ f4 c
< ><FONT color=#0000ff>#include <STDIO.H>
/ `' p/ O, ^2 L1 |" F! m#include <STRING.H></FONT></P>5 y! C8 [/ |9 \; t0 W$ x
< ><FONT color=#0000ff>int main(void)
% F" T: f- I9 H% U{
# J x5 Y4 `$ D# t6 C$ ]' gchar *buf1 = "ABCDE123"; + `( Z, G3 T3 J. o
char *buf2 = "abcde456"; ( [5 B. n3 _5 R5 m `; {! M
int stat; % z7 [# h$ N4 B
stat = memicmp(buf1, buf2, 5);
, ]/ r& m/ ]+ g4 g) g/ T% F$ Y: a2 a4 |printf("The strings to position 5 are ");
7 A/ g. Q1 [5 f* T3 wif (stat) ) B" o* J9 r1 P! t* W* q1 G
printf("not ");
: o( X V8 o* h; Lprintf("the same\n");
1 |; G1 {3 H* x' Qreturn 0;
: a, L/ n2 v) X- ]- P9 V8 S+ N} 5 c/ V4 c+ C. c5 H8 T
</FONT>
& k+ l2 v* a& |/ u! Z3 ~9 ?</P>
r; _' D$ Q& v< ><FONT color=#ff0000>函数名: memmove </FONT>
/ D6 ]/ h _) X* u! H功 能: 移动一块字节
" j, m1 w6 s2 W/ G d用 法: void *memmove(void *destin, void *source, unsigned n);
" U" F$ j+ M" v: M4 i! m程序例: </P>$ N) i+ |* a5 k* R
<P><FONT color=#0000ff>#include <STRING.H>4 J) J$ @4 w n) q
#include <STDIO.H></FONT></P>" @) V+ J, ?% x( t
<P><FONT color=#0000ff>int main(void) + c, d0 K9 v( X' g/ k1 R( F0 \9 y
{
. e; c# I# m! Zchar *dest = "abcdefghijklmnopqrstuvwxyz0123456789";
3 Y# }9 @3 h/ `2 Q6 K: Gchar *src = "******************************"; + Q& m& J* W9 G6 J
printf("destination prior to memmove: %s\n", dest);
$ j' l. j. h: {0 m) Zmemmove(dest, src, 26);
! |1 ], }& m/ _+ I/ ~( h6 pprintf("destination after memmove: %s\n", dest);
' x7 ~8 I: [. }* Ureturn 0;
' [9 i8 l5 z A0 ]} : K/ t! p! J! [" \
, I3 z O! f, ^* U</FONT>1 g0 A) t8 c' c1 P. c7 q8 C( G
</P>
9 J/ _" \3 E) `* e* b6 y$ x$ U) ?<P><FONT color=#ff0000>函数名: memset </FONT>8 Y6 _- B/ S/ g R {
功 能: 设置s中的所有字节为ch, s数组的大小由n给定 8 }1 i. @! P* c+ w6 R
用 法: void *memset(void *s, char ch, unsigned n);
8 u# ?% {" n+ {+ r5 U" Z+ M4 e! B程序例: </P>
( L; S( s( h3 U2 n<P><FONT color=#0000ff>#include <STRING.H>/ ~7 h+ Q& C2 a. T2 x6 w* @6 x
#include <STDIO.H>
( K$ Y5 C: X* X4 ?' H2 J$ ?) r#include <MEM.H></FONT></P>+ ^ |8 c9 \0 j+ o: h ?/ ]
<P><FONT color=#0000ff>int main(void) z- E, M- s g6 ~: D
{
/ K+ x K' S8 Fchar buffer[] = "Hello world\n"; </FONT></P>
0 A9 ]* \4 Y+ v, ]* ]<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer); 8 E& ?& A3 j% T# t* l$ A% D
memset(buffer, '*', strlen(buffer) - 1);
2 r5 X$ n+ P- o' u" jprintf("Buffer after memset: %s\n", buffer);
, p0 p- h: g3 I: X( {! Z& freturn 0;
& `! D$ [ ^+ l! N1 t} </FONT>- L! O. h8 _. O" ]
[# ^' s! N* @, f- c
</P>' b. z% A$ a7 C
<P><FONT color=#ff0000>函数名: mkdir </FONT>
) B% z- ~9 T/ z/ I! S! C功 能: 建立一个目录 # s$ k5 |6 j2 J" P) f6 y
用 法: int mkdir(char *pathname); * O& Z: ` y: E' J# p( t9 {8 L, u
程序例: </P>
; l* r, l; \" L, ?- F<P><FONT color=#0000ff>#include <STDIO.H>8 c) `6 Q0 w" E' _* `8 m
#include <CONIO.H>
7 b k+ A9 A& w$ W#include <PROCESS.H>
6 _2 a" d, p7 _3 q#include <DIR.H></FONT></P>
" i: s) r% o. |, z, L2 a<P><FONT color=#0000ff>int main(void) & U6 ~, I8 c. B' ?
{ 0 N3 u' L! q6 e' ]: p# U
int status; </FONT></P>
0 ]- s T, n3 M3 X' N- K<P><FONT color=#0000ff>clrscr();
! o% n0 i; p/ A: ?status = mkdir("asdfjklm"); ' @4 o7 z- E- X7 ^( z8 x& Q
(!status) ? (printf("Directory created\n")) :
; H- P% k# O/ v3 ^3 E(printf("Unable to create directory\n")); </FONT></P>
) G4 x2 V1 X! f5 z/ }/ D<P><FONT color=#0000ff>getch(); 4 t8 F6 \! O% x
system("dir"); 5 H% x. M9 Z8 @3 s3 W) J
getch(); </FONT></P>
# i1 E* {: K9 z1 f) R* b<P><FONT color=#0000ff>status = rmdir("asdfjklm"); 9 X1 M# Z& J( N3 |
(!status) ? (printf("Directory deleted\n")) : * J4 c+ Z* z! m" L& p- w+ c0 i! `" y7 Q* {
(perror("Unable to delete directory")); </FONT></P>
6 F/ l7 F1 n( ]; L1 @6 r<P><FONT color=#0000ff>return 0;
" `! J; }! W8 M} 2 Q/ ^2 a' Q5 N2 d
# V5 J8 x0 J5 i3 z
</FONT>
" a) S9 l) c1 I1 }6 y</P>7 p: }+ F6 m5 f; P# y% M1 C# K
<P><FONT color=#ff0000>函数名: mktemp </FONT>5 a+ E5 g! |7 e, S
功 能: 建立唯一的文件名
a9 X- V6 V7 E( j) w2 T用 法: char *mktemp(char *template); 5 g- {% v* v9 T U8 O0 A% U
程序例: </P>
$ ? v& p1 F4 ]. _% C3 F<P><FONT color=#0000ff>#include <DIR.H>( x5 w/ x7 w# F0 T9 x, A
#include <STDIO.H></FONT></P>' k. Q4 S/ T) x) d5 i0 i1 R
<P><FONT color=#0000ff>int main(void)
0 t* r5 X0 h0 N( F5 K{ 9 l+ V5 n6 U/ e; K7 z/ {. v1 B
/* fname defines the template for the 4 |# o) v" M$ W2 |7 f7 U# j
temporary file. */ </FONT></P>
4 V$ \# l8 q! r; |2 i<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>/ Q' q5 \: {+ `! t6 l
<P><FONT color=#0000ff>ptr = mktemp(fname);
* D$ s( t4 | nprintf("%s\n",ptr);
* W; m7 P* y% \5 J+ a8 kreturn 0;
! v0 I# m! C9 ?' ^% |. X} 1 |$ |4 x7 C t$ q8 y
</FONT>4 L- O" g Q8 b" D$ R$ A3 S4 n
</P>
" C9 O/ A( c4 A/ `" k<P><FONT color=#ff0000>函数名: MK_FP </FONT>
6 n4 X% B; k. ^! B) z; n9 t功 能: 设置一个远指针 4 F7 o! L2 l% W& S. y( e- @
用 法: void far *MK_FP(unsigned seg, unsigned off); # u$ G* f/ ~, Y: L
程序例: </P>
: f, h) h _1 S$ Q8 W<P><FONT color=#0000ff>#include <DOS.H>/ {% R9 q* d4 n ^7 P9 p
#include <GRAPHICS.H></FONT></P>
9 M/ t# d7 J% y' c<P><FONT color=#0000ff>int main(void) ( p& E7 _$ c- C8 `* h
{ % X2 h# v1 ?( c" K8 I: s
int gd, gm, i;
+ _. G% u: J: I7 N0 B! B+ r4 nunsigned int far *screen; </FONT></P>
) h3 c; h8 E, H6 p! `3 r1 ~<P><FONT color=#0000ff>detectgraph(&gd, &gm);
2 M) ?5 J$ j3 R7 E# lif (gd == HERCMONO)
& X9 q/ u1 V# b% \$ Cscreen = MK_FP(0xB000, 0); 7 m5 z. `* w" e
else
1 C* \0 T7 m' ?& U4 } Jscreen = MK_FP(0xB800, 0); 0 _* v. S( Q3 y
for (i=0; i<26; i++) ) t7 g* M+ y* ~" ] ~/ H
screen = 0x0700 + ('a' + i); 2 c; X& W9 f, w8 h3 M. w: [
return 0; 8 j7 c0 z1 o+ R4 @1 F" l
}
3 Q5 k$ g: Z2 G+ r" ~- T</FONT>
9 a H3 J% g- p9 b</P>( t7 s. n6 {3 R$ B% Z( m
<P><FONT color=#ff0000>函数名: modf </FONT>6 ~4 N6 \4 J" k! c- M
功 能: 把数分为指数和尾数 1 p. S3 P+ E5 B4 l) x* x+ o
用 法: double modf(double value, double *iptr); 4 x$ d& R. R1 J* ?/ u
程序例: </P>) G* w% ` a% S3 I. t
<P><FONT color=#0000ff>#include <MATH.H>% l# z1 W+ f+ [
#include <STDIO.H></FONT></P>
8 _1 h/ w* ~! Q# r6 s# f! c- {<P><FONT color=#0000ff>int main(void) 6 p, }/ D7 l5 W6 X7 C5 w `7 [
{ $ R; u/ h) g3 N6 b4 S! `$ o
double fraction, integer;
: t: I9 _5 A$ w$ _; {double number = 100000.567; </FONT></P>
) _+ f7 x8 [' P. V<P><FONT color=#0000ff>fraction = modf(number, &integer); 9 l0 f# @ }& R
printf("The whole and fractional parts of %lf are %lf and %lf\n", ) I5 U1 [, y. G& p( b8 B
number, integer, fraction); / t a2 D# a$ ] \
return 0;
% `4 g. ]2 c6 z& D2 @} </FONT>
9 K. B& w8 U. }: O c# z8 t0 O' F" N
</P>
7 w4 |# X1 n* {3 `<P><FONT color=#ff0000>函数名: movedata </FONT>
- H H4 b* |$ i9 n" H功 能: 拷贝字节 2 V4 N: x) p. e
用 法: void movedata(int segsrc, int offsrc, int segdest, $ L* ?/ M/ ]8 h q' g# Q! y
int offdest, unsigned numbytes);
4 f4 g% u" y$ s程序例: </P>
8 j# Z* e: t) A; L<P><FONT color=#0000ff>#include <MEM.H></FONT></P>8 v* u0 E w: j' G- j4 _: o
<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>
7 r9 L, l1 j! a2 E7 y* [; B<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */ 8 v0 d0 B9 N7 u, @) o- p
void save_mono_screen(char near *buffer) & Q- q) f( z+ j
{ 9 z% R* V6 x! d3 u @( _+ _6 N5 x
movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2);
6 E3 f% ]7 j' Y! I, Y/ v) n} </FONT></P>
' j- G/ U5 C' \+ p/ o<P><FONT color=#0000ff>int main(void)
, \3 G1 v- Q; m{
! i( d7 H% j! B7 t1 c+ | Ychar buf[80*25*2];
6 e- Q4 {& W$ x' Esave_mono_screen(buf); / a8 H2 ]5 k1 [) U
} * {$ R. }% |& C+ f* f
</FONT>
+ b, @) Z ^0 z/ w. J</P>9 m: U3 D+ H2 n7 ?8 I
<P><FONT color=#ff0000>函数名: moverel </FONT>! {/ u, ?" S8 m; C t! L
功 能: 将当前位置(CP)移动一相对距离 ( E( h2 `& b0 g n
用 法: void far moverel(int dx, int dy);
1 r# X/ U8 [* I3 c程序例: </P>) i# `$ U! ^% ]7 }
<P><FONT color=#0000ff>#include <GRAPHICS.H>
8 X, O( o) r9 R" B# P3 ^0 O#include <STDLIB.H>& \3 r/ m g0 F6 ^- H. N% C9 D
#include <STDIO.H>/ _5 N: E3 O0 E9 I- \
#include <CONIO.H></FONT></P>
% l* ? h9 [+ g1 p) U<P><FONT color=#0000ff>int main(void)
- `# V' m. a2 N/ w" w) ^{
2 L/ t! H$ J6 l- Y+ J+ I9 d8 V/* request auto detection */
9 p: \ J1 G% V- l# O/ ?int gdriver = DETECT, gmode, errorcode;
4 @ L/ S7 E5 }# |% S7 Xchar msg[80]; </FONT></P>
/ i3 u5 K2 i& C/ }# [3 M W |<P><FONT color=#0000ff>/* initialize graphics and local variables */ ; X4 Q9 @7 i' B0 ~
initgraph(&gdriver, &gmode, ""); </FONT></P>& h4 h/ n7 ~1 E3 J
<P><FONT color=#0000ff>/* read result of initialization */ ) s6 L9 y* r5 a' r( [: @; i
errorcode = graphresult(); ( B0 \1 u$ s4 K* O7 @
if (errorcode != grOk) /* an error occurred */ / C: L+ y; g$ x" N* Z& r
{
! f3 h! l9 p. X% E- Wprintf("Graphics error: %s\n", grapherrormsg(errorcode)); & R( C9 U1 G, l( }
printf("Press any key to halt:"); ! @+ ^ l! H0 C- A! s
getch(); 7 R+ d1 n: v/ S+ R# s8 n
exit(1); /* terminate with an error code */ 6 q/ q/ W/ n- N- r* [
} </FONT></P>! l6 X! x/ G2 x0 l3 C
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ 0 j! ^: C$ m9 x
moveto(20, 30); </FONT></P>. } e# ?* j8 t; [+ N$ \
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
* ]9 U' E+ ]2 e% A* ]; Iputpixel(getx(), gety(), getmaxcolor()); </FONT></P>; k8 O7 S* S7 M$ \' i: X& ~
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
# B( |" j3 K$ u, g# fsprintf(msg, " (%d, %d)", getx(), gety()); 3 g& |, n1 s" E( U" c
outtextxy(20, 30, msg); </FONT></P>: r+ o4 f& r. o% a& w# U. |
<P><FONT color=#0000ff>/* move to a point a relative distance */ M9 D" j, \# `; g' T3 X
/* away from the current value of C.P. */
. v7 g2 \. k! {8 g1 s. [4 B! \" Hmoverel(100, 100); </FONT></P>, h( h" D6 W3 E0 m. ?
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
3 k* |) w; _# g, w, ~. h1 fputpixel(getx(), gety(), getmaxcolor()); </FONT></P>* P' T6 r) U- ]8 @$ G
<P><FONT color=#0000ff>/* create and output a message at C.P. */
; ^. b. F+ w7 \* M/ a% x( N0 bsprintf(msg, " (%d, %d)", getx(), gety());
$ ~5 B( X. W- O' c0 Pouttext(msg); </FONT></P>& t4 m6 W3 X4 N1 w n$ S# [; R
<P><FONT color=#0000ff>/* clean up */ / x: q0 }, X9 B
getch(); $ k% ] Y t: A, m R" L
closegraph(); . g, D2 p& R' V: [& b: g# L
return 0;
. R- I5 I" `) w5 w `+ v L3 \7 N} 6 u5 W" U/ E z; `7 d. Z; T; O
</FONT>8 p0 W/ R/ {& z, I
</P>
" Z- U" n5 L' K( C<P><FONT color=#ff0000>函数名: movetext</FONT> % T# M9 `) ~* q6 D0 c
功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域
+ ~. Z# ?6 W; V, `用 法: int movetext(int left, int top, int right, int bottom, 8 j3 o) {/ i, |
int newleft, int newtop); . s$ \( z5 W# M0 d. z; J2 i
程序例: # X( s" V. f0 ~+ u
<FONT color=#0000ff>#include <CONIO.H>
8 |; L9 o+ J4 Q/ }3 }. l5 L% a' V#include <STRING.H></FONT></P>/ W {2 ^. e) ^
<P><FONT color=#0000ff>int main(void)
2 r- S( Q! H9 |$ E{
/ S' W5 Y* p: G$ [6 L# D# |) kchar *str = "This is a test string"; </FONT></P>
9 E7 X1 ~7 I& C% z! N- ~# M<P><FONT color=#0000ff>clrscr(); $ F/ ?) w! H. i
cputs(str); 2 Z$ [$ l+ ~9 Z5 D% p. f- v
getch(); </FONT></P>
+ ~4 G, ?, m8 _3 t; u1 n<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10);
0 e8 {. C- M# a7 r0 E6 k( G6 a" egetch(); </FONT></P>
8 L! S: }3 _- g5 o<P><FONT color=#0000ff>return 0; ! a, D) v0 u% l0 Z
}
) \9 m, N7 n# u. |4 d5 b; @
+ H9 @& D% c; I</FONT></P>4 k) O+ U$ `& w5 o2 I7 R, @
<P><FONT color=#ff0000>函数名: moveto</FONT>
! d5 ~4 [6 w9 `* V$ m- F功 能: 将CP移到(x, y)
- {2 e4 L+ r* q5 _) l9 n t0 C& B- A用 法: void far moveto(int x, int y); 4 Q( h; R0 x% G7 P, b
程序例: </P>
. a7 v6 M% i, @" x<P><FONT color=#0000ff>#include <GRAPHICS.H>
4 C$ y- N& Z6 B8 e' Q" x- G' o#include <STDLIB.H>
2 C2 o$ [# D" _4 E#include <STDIO.H>( i. p* {9 f- ?" T ^
#include <CONIO.H></FONT></P>4 U2 n# c: R( S8 z9 K
<P><FONT color=#0000ff>int main(void)
- s5 T- F, ~" P L6 I" b{
1 q4 E t( [! q5 o2 U" L5 L C3 t) D/* request auto detection */ 1 W; v& x# w) J& W
int gdriver = DETECT, gmode, errorcode;
( i3 _- b2 V: k5 v) X# I2 F* achar msg[80]; </FONT></P>
2 }% {3 a- u" `% n6 Y J<P><FONT color=#0000ff>/* initialize graphics and local variables */
) d9 j! V/ ]# m$ o; A% m% u5 W' xinitgraph(&gdriver, &gmode, ""); </FONT></P>
4 g. B: _* T. m, K! \7 l3 e2 Z<P><FONT color=#0000ff>/* read result of initialization */
2 L# r5 v% M. e- O9 \errorcode = graphresult(); S* M+ E- i$ s% d/ E( s
if (errorcode != grOk) /* an error occurred */ # d8 U( ^; C+ _) P6 H- X' `7 Z: A
{
/ m: c% }6 }$ R% C( J, {# qprintf("Graphics error: %s\n", grapherrormsg(errorcode)); : ^! w" s4 F, r0 J3 [/ F$ P I
printf("Press any key to halt:");
' {! j& q3 m ~9 [2 g4 d8 [getch(); 0 E( s: \8 q# a5 k7 e6 b* M
exit(1); /* terminate with an error code */
/ a1 o0 D4 x8 [ ]} </FONT></P>( \/ R% `" e3 @7 R# M; J: C
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ " L: H% f, E& C4 U* S* ~: P
moveto(20, 30); </FONT></P>0 ^ X$ H! z$ P# y. w- e
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
& e6 |# }% {2 vputpixel(getx(), gety(), getmaxcolor()); </FONT></P>+ J, M) c/ x+ b; K& W1 k3 s
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ 6 n' l( R) R$ [
sprintf(msg, " (%d, %d)", getx(), gety());
! ]( P Z+ w! c% v% z1 T% Aouttextxy(20, 30, msg); </FONT></P>- S+ ^' b% d& e* ^1 T
<P><FONT color=#0000ff>/* move to (100, 100) */ 3 u2 _5 X4 c# H9 k2 k* k, @
moveto(100, 100); </FONT></P>
- I* k( k* S. x3 V2 ]<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ [' ]4 o0 O# t' V& p
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>" Q' V7 }. o1 ?2 O2 H( @- m0 M# o
<P><FONT color=#0000ff>/* create and output a message at C.P. */
5 ^+ W( U* Y8 v) p; msprintf(msg, " (%d, %d)", getx(), gety()); ; A) l* l; n$ i9 X# D
outtext(msg); </FONT></P>6 x! V3 O, `- y7 ^+ g
<P><FONT color=#0000ff>/* clean up */ / m5 W/ d0 m& Z6 W6 { D8 M0 i
getch(); ( Q! R8 H: p! t
closegraph();
3 t; w- }- J3 A: I* |return 0; 8 |# D# j" X1 X& F' B
}
9 N D, v2 [1 C" D</FONT>
6 D U# x; E7 M6 [+ P</P>
( t6 Y, p- {5 s1 [0 J& {<P><FONT color=#ff0000>函数名: movemem </FONT>! ^3 P5 U" \' m5 t
功 能: 移动一块字节
0 S5 Z- e% F9 e+ @* t% ^用 法: void movemem(void *source, void *destin, unsigned len);
7 W% y( p1 s; A( ~1 m1 ]2 E5 s- c U8 f程序例: </P>3 S3 o J% S1 H
<P><FONT color=#0000ff>#include <MEM.H>
; X: t0 H$ U6 f# i1 w% h#include <ALLOC.H># ?9 J2 k S! w5 k
#include <STDIO.H>
* P8 ^$ e4 r8 e8 W$ d Q#include <STRING.H></FONT></P>
+ {, J% G6 n# i& O ]) k<P><FONT color=#0000ff>int main(void) 0 m- n. Z+ L. `: ~2 N
{
& t& s6 Q" a6 S+ q% vchar *source = "Borland International"; " s- X9 L; _8 |" H E
char *destination; 5 f, D" }. h: z0 U
int length; </FONT></P>7 r: h K1 Q! Z3 u; A0 X, ?
<P><FONT color=#0000ff>length = strlen(source);
9 E8 E9 z" T* R, Sdestination = malloc(length + 1);
! N! p8 f% I( x' Tmovmem(source,destination,length); ( k% Q; @: v5 T S7 h
printf("%s\n",destination); </FONT></P>
* Q4 ?$ ~4 [" A/ \+ E' L5 H, E<P><FONT color=#0000ff>return 0;
7 h3 G8 w g. B0 F& _$ j} 5 r: U: f2 n8 Z
1 }3 e, g9 K1 t5 L% f</FONT></P>
! A4 g. h2 Z( {1 P9 M ^# X% ^<P><FONT color=#ff0000>函数名: normvideo </FONT>/ V. q' b5 h* x
功 能: 选择正常亮度字符
c) ~9 v( A' W7 g. h. J' Q* j7 w用 法: void normvideo(void); * w2 @/ S. Q8 H& S1 Z2 a7 c: m( l
程序例: </P>
3 G+ C; F' P- K; \. l8 v$ l<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>
3 t6 e! Q! h4 F6 I! M<P><FONT color=#0000ff>int main(void)
) |! Q. H9 r) g" [8 Q3 b0 z{ 5 k5 J* Z1 i9 D) b7 s7 F
normvideo(); 1 j# K" Z' d+ ~4 v
cprintf("NORMAL Intensity Text\r\n");
" Y6 Y" I! U- ?. greturn 0; 0 K3 E1 q! a! f% M
}
& X6 \1 h9 L; {- }; R: i2 a. q
</FONT></P># m- A6 ^& }( Q, `: E% ^
<P><FONT color=#ff0000>函数名: nosound</FONT> ( w& Q8 a+ _% D/ |$ S
功 能: 关闭PC扬声器
0 U, X3 N& ~% z- N. T用 法: void nosound(void); ! v9 I: |" `, r
程序例: </P>
1 K: u% P" B( J<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>9 R* }- z9 Q0 I9 p; V! t
<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity. . ]& T7 N) h% ?" x7 Z
This was determined empirically in Australia, where a new factory / Y/ F" a9 E2 s6 `0 d
generating 7-Hz tones was located too close to a chicken ranch: 5 E0 Z H3 S8 U5 L
When the factory started up, all the chickens died. </FONT></P>) ?* j- R- m4 j' G0 k8 w1 p7 X
<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone. ; B( f. o y6 S7 i( C5 s$ y
*/ </FONT></P>
/ N5 o0 z1 _ O8 c4 c/ H<P><FONT color=#0000ff>int main(void) 8 Z' b9 F% }8 Q
{
7 z6 m0 o. t+ I2 D8 G, A7 qsound(7);
% Y: c; O8 T" M5 m# }. ydelay(10000);
5 t+ w& U( ?; inosound();
! } n. H4 q8 W! z}5 [+ [3 M/ [9 {" z/ z4 U7 @& }
</FONT></P> |
zan
|