QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2935|回复: 0
打印 上一主题 下一主题

函数大全(m开头)

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 02:57 |只看该作者 |正序浏览
|招呼Ta 关注Ta
< align=center><FONT color=#0000ff size=3><B><FONT color=#cc0000>函数大全(m开头)</FONT></B></FONT></P>5 m2 _7 l# }1 u. s/ i; ?
< align=left><FONT color=#ff0000>main()主函数- A& E/ k: N. `
</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某
9 Y' \1 l+ V) o个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放
2 H; D; _; s2 n# E; w) c在哪个地方, 以下几点说明都是适合的。
5 W2 ]8 D, ^5 z4 `9 E<FONT color=#000099>1. main() 参数 </FONT>% |5 c; A* j9 W4 s( V
在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。
9 y! q6 M5 u% l& K" d* argc: 整数, 为传给main()的命令行参数个数。
7 M# K1 K; z8 D6 s) f$ o* argv: 字符串数组。 ! m3 _4 }* r  q7 M9 k! Y4 X0 s
在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0   C' P( l; ?( K3 b% L8 w
以下的版本, argv[0]为空串("") 。
/ v( r7 `( m- T1 gargv[1] 为在DOS命令行中执行程序名后的第一个字符串;
5 d( U' e$ t! W) @: H; `" h. p4 X3 fargv[2] 为执行程序名后的第二个字符串;
6 m1 }0 t$ V& E... 9 N! }( v% S; K- i, I
argv[argc]为NULL。
! G0 C; k6 o- l0 p* R8 O: s/ u*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符 ! F' t$ S1 k7 f5 W  s
串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C:
" x6 q+ U( j7 b8 ?\TURBOC(对于PATH) 或YES(对于87)。
3 p$ {. X. K. ATurbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中
$ G/ x+ @7 I1 m/ I# [说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序 5 \5 E( \# E8 [" L8 I) k
的局部变量。 8 ]2 m8 j5 L5 w, u  |
请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下
2 D# l, r' g. N- L' W/ |7 x1 B的例子:
& f7 o# ~$ J0 [0 S. J<FONT color=#0000ff>main() ! x7 b( R! L4 C: d9 n9 n
main(int argc)
3 ]7 ?  P) A! ~/ Y5 rmain(int argc, char *argv[])
5 K/ ?  P! e/ \/ B9 l3 smain(int argc, char *argv[], char *env[]) </FONT>
1 @2 h8 A+ u- }2 ?8 z: z- a9 a其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不
& u% _9 `: z8 A) _+ g( S$ d7 B. f) i用argv[]的情况。 2 D6 ^  [* a6 z# i; g' _$ F$ A
以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数: 4 ~7 w' _& m! o) r. M
<FONT color=#0000ff>/*program name EXAMPLE.EXE*/ $ S& s8 x- B: h- x
#include <STDIO.H>0 ~. n' ~+ K8 P! w; x3 x
#include <STDLIB.H>
8 g% k( U6 q6 L6 Dmain(int argc, char *argv[], char *env[]) ( [$ T& E( B/ b! t  W% ~/ \9 A
{
0 D' e# u* d7 u* m- W/ e/ f7 gint i; : E' R) a! ]( {0 r! K3 G
printf("These are the %d command- line arguments passed to
3 ?# O( O% u: j( a1 {main:\n\n", argc);
+ N! G" V2 c4 D1 Tfor(i=0; i&lt;=argc; i++) 8 W( Z1 F* r3 b( j3 U# L( L
printf("argv[%d]:%s\n", i, argv); & z" v, _- ?+ G+ |4 E8 N
printf("\nThe environment string(s)on this system are:\n\n");
) ~( P/ E0 Z0 ]% g9 ifor(i=0; env!=NULL; i++)
5 g  B/ w2 U6 ?7 Qprintf(" env[%d]:%s\n", i, env); 4 k% q4 V& c7 [8 T  d* I; \; S# Y
} </FONT>
4 p) F! e9 [4 }! Z& N' i如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE: ) Z/ Y+ C* @. U! _
C:\example first_argument "argument with blanks" 3 4 "last but
% Y8 c" }! |+ ?/ O8 x  {. Hone" stop! 2 |$ f+ ^$ w0 ]5 {+ ~2 P: x0 Z
注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument
/ R. S" \7 r0 |with blanks"和"Last but one")。
8 h  A: B( a( {9 }4 c# c结果是这样的:
. \& g2 C! O- P( G6 o<FONT color=#0000ff>The value of argc is 7
: c2 T% w1 d% ^: J1 }4 i: \% u2 ~" BThese are the 7 command-linearguments passed to main:
0 [- u: T1 m9 n  }argv[0]:C:\TURBO\EXAMPLE.EXE 9 |2 Z' V- g+ l0 W1 ^+ }
argv[1]:first_argument 6 w4 J" Q9 t; ^
argv[2]:argument with blanks * _5 v8 T6 E% v2 t& `3 ~
argv[3]:3
0 y/ E5 x6 Y% yargv[4]:4
2 k7 Q/ Z* `$ V4 h) @: C- Rargv[5]:last but one
/ o5 g, V9 y  B2 ?" E( vargv[6]:stop!
( `" W7 I9 T  f( bargv[7]NULL) , M; }- [1 @4 h4 J4 f/ G& j, C+ J
The environment string(s) on this system are: $ n  L( K, C' f1 n
env[0]: COMSPEC=C:\COMMAND.COM 6 G* }1 z# _) w; N$ q: n5 f
env[1]: PROMPT=$P$G /*视具体设置而定*/
% M  @( B" W; G% @3 Benv[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/
7 d# k& |6 K- h</FONT>8 I$ c! J0 Q4 c9 X& [( h: ?* L0 t- t
应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
- z. L4 f" g% f. h( K括参数间的空格), 这是由DOS 限制的。 0 d8 N, e/ g+ t: U4 G# p9 s
</P>
" G6 r4 Y5 B, u<><FONT color=#ff0000>函数名: matherr </FONT>& e/ H" q& ?2 `6 P8 q
功 能: 用户可修改的数学错误处理程序
. T* f: n, `  @7 u$ U$ g, B8 C, ^2 e用 法: int matherr(struct exception *e);
, ^) A( d1 F7 m. h7 R程序例: </P>
. j) o+ U6 V! h; q, b3 {; Q<><FONT color=#0000ff>/* This is a user-defined matherr function that prevents 9 Z3 u+ Y0 R" J2 J. B
any error messages from being printed. */ </FONT></P>9 \0 y( i- ~# ^, a: c9 l1 }
<><FONT color=#0000ff>#include<MATH.H> </FONT></P>& N8 N0 H5 c6 C
<><FONT color=#0000ff>int matherr(struct exception *a)
& p& V6 m# x: c5 N* f5 R{   p2 O; Q2 }9 X7 o. C: J
return 1; 8 S  k' s3 p# v- _+ B8 G8 U
}
( |) F4 P1 q/ W) F0 p7 ?: b( j0 h</FONT>7 v# X4 x+ t7 n

, A2 p5 l$ p+ h9 T* S# h3 {9 |</P>% o+ w4 X3 a/ X6 e  f
<><FONT color=#ff0000>函数名: memccpy </FONT>% D! m! Y1 _- N. A
功 能: 从源source中拷贝n个字节到目标destin中 : ?7 K) x' X( q0 [  f9 y$ y
用 法: void *memccpy(void *destin, void *source, unsigned char ch, 5 ?* {! H' q) o) m8 `1 c& N, `5 p/ v
unsigned n);
3 y/ F1 m& @5 ~4 e" o# u- O3 M! G; x程序例: </P>
. [$ B4 T2 E+ b: i+ a2 H5 c  S0 a<><FONT color=#0000ff>#include <STRING.H>
5 b) X6 z% u/ s+ A9 E#include <STDIO.H></FONT></P>
0 V3 I* `- c, ^<><FONT color=#0000ff>int main(void) 5 }! G( I$ v5 j, m
{ , U: A6 C9 {+ Q1 v
char *src = "This is the source string";   g5 t+ D5 b* x& e5 d( {' z
char dest[50]; ; O+ v, \$ N9 P. z  J& c
char *ptr; </FONT></P>
9 o6 m; H: h/ p9 q# P8 R<><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>* F" R8 ?5 C/ i- d0 M
<><FONT color=#0000ff>if (ptr)
" U/ w, c$ L0 `& I{ & W8 M% Y8 Y( k" G; V) t, x/ S
*ptr = '\0'; . q+ f- n9 @) u1 d
printf("The character was found: %s\n", dest);
) Q. r7 ^1 Y2 @' T( A2 D} 0 [/ k3 r. y% u0 v1 d
else 2 z# R3 C; V1 s4 P2 j! r
printf("The character wasn't found\n");   u2 y3 P6 G( {& a* ^
return 0; 6 x' c( y5 y' C' A' a
} 3 F0 Y/ ?" E9 N( A% V
</FONT>
) v; c7 c" B1 y" T</P>
3 h  l, q' q$ [: l& Y1 c<><FONT color=#ff0000>函数名: malloc</FONT>
( a2 k# t5 O1 ^& }+ g) E功 能: 内存分配函数 # X& K7 `2 I4 X0 k8 _/ [; K
用 法: void *malloc(unsigned size); 1 s( Q% h# }' U8 c2 M- V1 F4 R
程序例: </P>
# t# j) m: a! F: J' G<><FONT color=#0000ff>#include <STDIO.H>) {  p: w: ~* X% j
#include <STRING.H>
, ?, X2 E) A% E( x& s- \3 O#include <ALLOC.H>9 Q% w& p2 L3 ~
#include <ROCESS.H></FONT></P>
4 b) @5 \6 V3 q; d2 A<><FONT color=#0000ff>int main(void)
, P* n! @7 j, [/ A+ @5 p{
- O* @8 M& K" Gchar *str; </FONT></P>
! i2 q+ O6 X! e<><FONT color=#0000ff>/* allocate memory for string */
/ w) Z, |1 C' y) t7 Q/* This will generate an error when compiling */ $ C( @* z; V& g% @
/* with C++, use the new operator instead. */ 2 h( [- y* J0 \5 G# {+ t( G/ F
if ((str = malloc(10)) == NULL) 2 N/ r9 a' C+ S# J: z& a! [5 B. K
{
& ?: M, A6 X# Q( Y& l! M! Qprintf("Not enough memory to allocate buffer\n"); ( [/ u' R1 ^/ @3 c: W: `
exit(1); /* terminate program if out of memory */ 4 `, T0 z! V1 U# O. V( _
} </FONT></P>
* \% f) f. l5 v/ R1 ]: W0 e2 X<><FONT color=#0000ff>/* copy "Hello" into string */
9 X5 J9 y- i  P8 Astrcpy(str, "Hello"); </FONT></P>
7 ~1 `0 ]! N* H6 C; ~7 m  F<><FONT color=#0000ff>/* display string */
( n/ X) K, J: Z3 k2 xprintf("String is %s\n", str); </FONT></P>8 u& D! d1 E% L$ L9 @
<><FONT color=#0000ff>/* free memory */ % `" u4 e" G) g3 ^& ?3 b9 I
free(str); </FONT></P>
: \5 E7 R; @5 {' {<><FONT color=#0000ff>return 0; % v2 w) c& R7 ~7 ~8 {
}
4 D! J* s( ~, x+ ^9 F* B( E( K( x3 x: h( j) L
</FONT>: Z9 C. j! O& t
</P>; a6 c+ y4 F, W' |
<><FONT color=#ff0000>函数名: memchr</FONT> 2 {/ s: H( u* K$ k$ z" D: M, \
功 能: 在数组的前n个字节中搜索字符
1 n0 U' t5 p! N用 法: void *memchr(void *s, char ch, unsigned n);
0 I% q" j, q( L, p& N程序例: </P>5 K, E' \. J, E3 @: N
<><FONT color=#0000ff>#include <STRING.H>: U  B% F  Z: E
#include <STDIO.H></FONT></P>7 s  T' z8 M; S- E$ k# T
<><FONT color=#0000ff>int main(void) * w3 N$ Q3 ~! [+ O( }, y
{
) a2 t. \; f' z  |& R9 jchar str[17]; 9 _0 s: ~7 N1 e9 U1 @
char *ptr; </FONT></P>$ i$ Z6 G' x+ _9 Y6 Z/ L
<><FONT color=#0000ff>strcpy(str, "This is a string");
' t9 d* M8 h+ m- }2 e$ o; rptr = memchr(str, 'r', strlen(str)); ( ~! y! M+ u% o. L! d2 L
if (ptr) 3 c6 |  P; n# m4 M  _0 T2 @7 T; M
printf("The character 'r' is at position: %d\n", ptr - str);
' j( L# J. [# o5 N5 yelse
: h/ ]! A$ G' R; O5 B& t- B. eprintf("The character was not found\n"); 4 {. V4 q( x# `7 W2 t
return 0; 7 M7 F: `; G  U  Y0 Z
} : i; k) K, k+ J( n& L' t
</FONT></P>
( U" y: G' E0 t) b2 W; D<><FONT color=#ff0000>函数名: memcpy </FONT>
$ b) \& |. B3 I功 能: 从源source中拷贝n个字节到目标destin中
. [$ n$ D: I& O$ E+ a0 r用 法: void *memcpy(void *destin, void *source, unsigned n); 2 ]9 _9 F: g; C% k
程序例: </P>
6 p0 b. Y. A. ~. N; l/ D, G  e<><FONT color=#0000ff>#include <STDIO.H>8 Z! v) M- k$ G9 e( |
#include <STRING.H>( A. `) F) R3 r0 G2 H) E
int main(void)
2 c& R2 O+ s& r, g/ T5 v( n. r{
( i% {4 F- A# F9 o6 Echar src[] = "******************************"; : |5 t9 w# L: a  A
char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";
2 F6 W9 R% g% e; l- Tchar *ptr; 8 T$ P1 Z& P, `% |5 X
printf("destination before memcpy: %s\n", dest);
  v2 B  J4 `5 b( ?! {( Iptr = memcpy(dest, src, strlen(src)); 5 z7 ?- Z* X6 f3 W
if (ptr) ( I9 r' q% L# I7 x) t  O. A
printf("destination after memcpy: %s\n", dest);
/ o/ ?/ o8 M9 v2 ?( g* Welse ' A/ A) R1 P9 F$ S. H, f
printf("memcpy failed\n"); / B1 N1 [; ?+ i% I
return 0; ) k- T3 _0 i: `- i
} , V) ~+ D, G/ ~) T" f. _. b" v
</FONT>
$ r( s* f$ R9 u$ n% p- }</P>
. _3 A4 b. `* m) p5 V& r% d<><FONT color=#ff0000>函数名: memicmp </FONT>
" h$ k1 j! w8 P% e" U) S1 ?功 能: 比较两个串s1和s2的前n个字节, 忽略大小写
/ I# R5 [' i& T  V3 P, u4 \! b用 法: int memicmp(void *s1, void *s2, unsigned n); 5 N# e' I/ c% z7 ?$ a: b$ B
程序例: </P>8 a% l- @" i& M" w, Q% {
<><FONT color=#0000ff>#include <STDIO.H>' _% y' k4 K" v, O
#include <STRING.H></FONT></P>
3 E2 m% a% ~- n. M9 c* V: N& s" W6 h<><FONT color=#0000ff>int main(void)
: C2 g6 C; s7 V- V{ ; I+ L  c3 x  \5 D
char *buf1 = "ABCDE123"; 2 g2 L) v$ R4 ]6 q; A- C/ Y/ X
char *buf2 = "abcde456"; & r) \* W1 Y$ w5 j; h6 B
int stat;
! F2 v+ o- p5 F6 D. Lstat = memicmp(buf1, buf2, 5);
5 b" L& u3 p5 h* E+ Nprintf("The strings to position 5 are "); 9 |. z  r0 f& C% J
if (stat)
* Y' @- k0 U3 R1 N4 \) ]1 vprintf("not ");
5 V2 B& ^9 m, k2 R' |2 p, Xprintf("the same\n");
# K. [9 ~4 y; nreturn 0;
  d6 C! o: n* h: o% }} : b* M& m1 J) d6 b' s
</FONT>
1 R! l2 r- T! k% d7 O, l</P>
: B! d5 ?; J! {) L8 D6 T# d<><FONT color=#ff0000>函数名: memmove </FONT>
1 {/ Y0 u' @/ w功 能: 移动一块字节 / e% D$ F$ C( k/ n4 k! d
用 法: void *memmove(void *destin, void *source, unsigned n);
3 F# j8 x) N9 ]程序例: </P>8 D& N2 @5 S8 `# f/ `4 o/ u: `- O
<P><FONT color=#0000ff>#include <STRING.H>
1 l6 l) |- U! ^* o# N#include <STDIO.H></FONT></P>
+ M; r" d2 b; P" c  P7 P<P><FONT color=#0000ff>int main(void) 6 l+ f1 U% B6 L' |! u) p0 S8 |
{ 6 T8 U& E/ h5 m/ m5 A8 ]( n
char *dest = "abcdefghijklmnopqrstuvwxyz0123456789"; ' h$ V$ ]. x2 B7 X3 t8 D1 {: R
char *src = "******************************";
& y$ A% c; g. Eprintf("destination prior to memmove: %s\n", dest); 9 `! T3 @9 Q  f( ]
memmove(dest, src, 26);
3 R8 Q9 y# P& |( A. Mprintf("destination after memmove: %s\n", dest); - B1 I7 i3 U( T9 l; I
return 0;
' Z8 X- R* u, a" G}
6 E' Y$ r* D3 o/ t
2 v8 f% w( G  ~5 J+ Q- c2 [3 w</FONT>! `" W& K8 w1 V
</P>
6 [1 e4 y' w( x<P><FONT color=#ff0000>函数名: memset </FONT>
1 v6 H2 {" @& ]1 }+ X功 能: 设置s中的所有字节为ch, s数组的大小由n给定 $ |# j& `8 s% m% q1 V" t+ K$ L0 \
用 法: void *memset(void *s, char ch, unsigned n); ; a$ }/ k0 g. E
程序例: </P>; Z% a: I1 X" ^
<P><FONT color=#0000ff>#include <STRING.H>
3 Q, K6 W& N8 i" f4 n#include <STDIO.H>* t2 a- I0 X' `- ]/ Q5 Y2 @
#include <MEM.H></FONT></P>
2 m: F. b* y* d$ v1 p' c<P><FONT color=#0000ff>int main(void) / T( Q& F3 u, M( D
{ & u/ C  i7 }* ^# H! i& q
char buffer[] = "Hello world\n"; </FONT></P>
7 i/ e. M9 z: J- Y( j9 v" d8 q, r<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer); 8 \8 l) K* |5 {) [; i
memset(buffer, '*', strlen(buffer) - 1);
  P6 a$ h! b% I7 n7 s. tprintf("Buffer after memset: %s\n", buffer); 8 W% Y& M; d/ ^9 r. d8 ~
return 0;
2 ^' }, w6 i$ c1 c} </FONT>
: M! y1 ?8 q% p+ j5 S7 S6 |" ~. n; S4 t: s: N8 o
</P>
/ h1 s- j9 y& X! C<P><FONT color=#ff0000>函数名: mkdir </FONT>
* ?- h8 K( [' R# E功 能: 建立一个目录
! |: D8 K: M7 d  u2 D用 法: int mkdir(char *pathname); : H( j3 Z# J- s8 g: C: p
程序例: </P>
  _3 P1 l& n/ z# }, I/ |$ x<P><FONT color=#0000ff>#include <STDIO.H>
! g( i: `; c! N  G! j5 R$ u+ l2 Y#include <CONIO.H>3 x0 ^+ t2 G4 {& y4 P
#include <PROCESS.H>) S. e$ F8 @( |( g/ R" \; f' g4 F
#include <DIR.H></FONT></P>
7 C- R4 o! c9 f" P<P><FONT color=#0000ff>int main(void)
: x9 y$ A( R; D" z, ]! s$ F{ + d/ R$ u. W: @. O( y0 w+ V: P# Z
int status; </FONT></P>
6 j) z3 p% k0 G<P><FONT color=#0000ff>clrscr();
2 C0 B, O2 h9 ~: |status = mkdir("asdfjklm");   a  p( o/ o; V* V+ l8 M! V2 l2 w
(!status) ? (printf("Directory created\n")) :
4 ^  f. U' n. a8 ]9 Q(printf("Unable to create directory\n")); </FONT></P>
8 a2 k' h; ]; Q, r; Z9 {8 U, z<P><FONT color=#0000ff>getch(); 1 y& g$ L9 P4 Z. i. ]- u# w
system("dir"); ! d7 X8 Z: s9 c5 [9 z/ [
getch(); </FONT></P>: Y  w5 T! n4 H# U
<P><FONT color=#0000ff>status = rmdir("asdfjklm");
9 u& I3 {8 R1 |! v4 I* v(!status) ? (printf("Directory deleted\n")) :
  f/ h3 y( e2 g8 Q7 x+ K/ X& h' ](perror("Unable to delete directory")); </FONT></P>& X: `+ z. e7 E3 x
<P><FONT color=#0000ff>return 0; + M# Y* A, U  ~
}
7 Q1 ~1 o( m  f" Y& W/ I
/ ]0 M. \$ ^5 z  P9 M2 k</FONT>, j- B" J% T. e( j9 |. z
</P>& G/ B  B, @; p- H, A
<P><FONT color=#ff0000>函数名: mktemp </FONT>$ j6 d, `! ~, h# Q! C. R" ^
功 能: 建立唯一的文件名 9 V' T" T. c+ O5 n* t
用 法: char *mktemp(char *template); , F% a7 t5 ]- H
程序例: </P>4 s+ `6 K9 q! c. J
<P><FONT color=#0000ff>#include <DIR.H>( \3 f/ A# b3 {. f- g6 h
#include <STDIO.H></FONT></P>
: f7 R* z  K, G' c<P><FONT color=#0000ff>int main(void)
2 C" n) p, H; l- g{
3 E1 X* W- S! J2 o$ B1 v/* fname defines the template for the
- I  F/ Z8 Q* \  d" atemporary file. */ </FONT></P>8 M: O' M6 C1 y8 P( ~
<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>
6 ~  W' h- G, n0 B6 e+ @<P><FONT color=#0000ff>ptr = mktemp(fname);
- N$ ]& Q9 v4 a1 g! }printf("%s\n",ptr); ) h- X9 i, E; n. A# b* c8 f% e
return 0;
& R: @; j+ s8 @# n9 }8 c}
% N; ?4 _4 D( y4 {</FONT>
2 x8 e3 H4 H& C4 q  g. I</P>
% S2 s! q' ]2 I  q/ d8 Y0 K<P><FONT color=#ff0000>函数名: MK_FP </FONT>; X+ U" g# n5 D" {  Y
功 能: 设置一个远指针 & w& ]  w, z  h; j4 k# M
用 法: void far *MK_FP(unsigned seg, unsigned off);
$ |' R0 X: U# L2 e程序例: </P>
4 m1 |: p& p0 E<P><FONT color=#0000ff>#include <DOS.H>
: l8 Y- z0 K% [4 x( l#include <GRAPHICS.H></FONT></P>
& A: w5 ^, e5 b) W7 X! E, f<P><FONT color=#0000ff>int main(void) : v+ `7 g9 a3 G9 |/ b, I/ W2 G
{ 1 u& _  Q5 l! b; {8 x2 K
int gd, gm, i; . F( l7 c6 ?: D* @
unsigned int far *screen; </FONT></P>* V2 y; b& q& e0 @1 k& G
<P><FONT color=#0000ff>detectgraph(&amp;gd, &amp;gm);
4 I. l2 o3 t  E* Z* J( B/ a  Rif (gd == HERCMONO) - Q0 I6 L8 r$ W" E
screen = MK_FP(0xB000, 0); % g* F& u' g$ t3 W* C
else
" Q+ H6 G# V! n  \" @, Nscreen = MK_FP(0xB800, 0);
) _1 `6 S3 ]3 s4 X9 m6 {, f& ~for (i=0; i&lt;26; i++)
) p5 W1 |2 r5 L$ G: Rscreen = 0x0700 + ('a' + i); ; s, h1 z; c. H% G: ^
return 0; 6 b3 O' }1 A( @. s0 ~# U
}
. @; s! N, }( \. _" V</FONT>
+ o& d5 b( R6 d* H, [% o2 |</P>2 D+ z( u, L* Y! g2 l& \# R
<P><FONT color=#ff0000>函数名: modf </FONT>. v; y) H* e( q4 B4 C4 y' ]" C- `7 R
功 能: 把数分为指数和尾数
8 p! U6 x" M0 i2 ~7 Y0 L/ O用 法: double modf(double value, double *iptr);   \9 L$ k- y' e) F0 q
程序例: </P>
1 f! X7 v" w# s3 S& y<P><FONT color=#0000ff>#include <MATH.H>7 a* H! D8 W- Q
#include <STDIO.H></FONT></P>8 K; `# n% J" P: M  L  S
<P><FONT color=#0000ff>int main(void) : ]; v  I( X  t  T+ i/ D
{ # Q# i4 C% I, T. L9 O/ ]+ a+ a" r
double fraction, integer;
7 F# w2 c6 ?% r( h# x, pdouble number = 100000.567; </FONT></P>
0 P. r6 I) P2 z<P><FONT color=#0000ff>fraction = modf(number, &amp;integer);
- A9 R9 K% I1 B+ D7 G7 z" w. {printf("The whole and fractional parts of %lf are %lf and %lf\n",
- Q& j* G$ T4 F; ?number, integer, fraction); ; f0 E2 D2 L) L& K" G+ Z
return 0; 4 m( Q/ J2 v, d- X  q
} </FONT>
1 o7 t) H& y5 f5 F6 W0 v: D& F
3 {  a2 \; c+ T0 f8 j. i</P>
* n8 l4 Y* h* a( C7 A<P><FONT color=#ff0000>函数名: movedata </FONT>  r( o  W9 k5 v: T3 d# |
功 能: 拷贝字节
. P: b, b; u  ?2 e用 法: void movedata(int segsrc, int offsrc, int segdest, / X* f6 {/ Y: m5 F
int offdest, unsigned numbytes); 4 T" c9 y/ f5 X, \8 j  D
程序例: </P>; g# I- B  N; G" ~; X
<P><FONT color=#0000ff>#include <MEM.H></FONT></P>
0 K) x- @5 e/ @! X<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>1 ^* h1 o& C% \% u0 ?: @  m' n' t. r
<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */ 2 s* s" h+ \4 E+ g
void save_mono_screen(char near *buffer) 4 E. W2 I  m( E" E8 D0 [
{ : n8 d- U. w# `/ f1 x
movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2); " e% Z5 w- l. l
} </FONT></P>
# y' J- F5 {5 J1 w6 m<P><FONT color=#0000ff>int main(void)
+ z4 Y8 ]0 z5 k0 F/ e2 N: O{
4 E9 ?/ r. {( |' Achar buf[80*25*2]; - ?* b+ i4 p  l% K+ N; U
save_mono_screen(buf); ' x$ y! p5 u' Q; m
}
9 Z9 `5 \: E& T" K* u0 w3 ]" }</FONT>
! N  Q2 n: I3 \</P>) R$ I* K% g0 u# S. |& \
<P><FONT color=#ff0000>函数名: moverel </FONT>
: s$ k8 o* z  s  ?; H. A0 o% H功 能: 将当前位置(CP)移动一相对距离 + u6 t  P* w/ C' c1 k6 k9 @
用 法: void far moverel(int dx, int dy);
8 p+ y3 z+ J; i, V程序例: </P>$ U  [8 ]& `* r/ l5 [
<P><FONT color=#0000ff>#include <GRAPHICS.H>3 o% z! Y) d# \: K
#include <STDLIB.H>
: I; m: t6 @# H1 `4 L9 _#include <STDIO.H>
/ Q7 g, U$ q7 f/ t2 a#include <CONIO.H></FONT></P>( N4 G2 _# E8 Z# v/ V, a+ a
<P><FONT color=#0000ff>int main(void) & f4 `+ R4 N. ]; Y2 i+ L2 {  e
{
* N5 W3 q$ |0 l* }7 w- T2 d; j) U/* request auto detection */
$ p8 Q4 g2 g  B: O# ~int gdriver = DETECT, gmode, errorcode;
/ ]4 U/ |  }% K$ B: R+ f0 i5 [char msg[80]; </FONT></P>) F& K6 o8 Q8 n* G; v9 X* e8 q
<P><FONT color=#0000ff>/* initialize graphics and local variables */
- j& v3 y- ~& a+ |0 G# x0 \initgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>: ~. [( s$ W5 |# c8 v( L5 D3 x( b
<P><FONT color=#0000ff>/* read result of initialization */ / a! |5 ]$ k! L* b7 C/ V. @
errorcode = graphresult(); ( [% ^$ v- P+ A+ h7 u% v6 }
if (errorcode != grOk) /* an error occurred */
7 p9 m: \4 C) f5 r( K; x{ 1 b" I$ q0 u! E4 n
printf("Graphics error: %s\n", grapherrormsg(errorcode));
0 J6 h: v/ B2 M, |( i7 G' Cprintf("Press any key to halt:");
/ S' ^% N7 {; c) s$ j7 C! N, X( {getch(); * v3 Z5 |0 S5 Y, C0 k$ f* Q9 \2 `3 i
exit(1); /* terminate with an error code */
# y7 M0 K) C, C} </FONT></P>
' a8 E( l: t$ R! X3 T, K2 z% h' _<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ & y1 [  V+ @' j9 ?, t
moveto(20, 30); </FONT></P>
7 R0 B3 o. j! j7 E<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ 7 b( b4 p) M9 b. O- Z' d6 ~
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>
& F' q% O  N* Y' C0 v<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
0 d! N% e5 a7 p" q' L2 usprintf(msg, " (%d, %d)", getx(), gety());
! F, z% T0 _/ C/ uouttextxy(20, 30, msg); </FONT></P>7 ^$ K+ u$ H( L9 i2 Z( |2 r
<P><FONT color=#0000ff>/* move to a point a relative distance */ ' \( U3 }, z* F7 _- S  v; ^3 o
/* away from the current value of C.P. */ 5 b8 S& L: f' C' S2 ^) \( T
moverel(100, 100); </FONT></P>$ f/ ]# h6 `  O, l
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ ; g7 D5 u( D1 q- i. a. }9 H
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>+ b+ b3 ?+ b; i/ o
<P><FONT color=#0000ff>/* create and output a message at C.P. */ ' Z9 t! `" u( J: U. x1 t
sprintf(msg, " (%d, %d)", getx(), gety()); $ A9 r: [3 ]7 ?* |7 Y: A& [, `
outtext(msg); </FONT></P>
2 ]  E' s3 O: M3 z1 r<P><FONT color=#0000ff>/* clean up */ : p* }$ M' [6 ?; u
getch();
% A: l: c2 p5 |closegraph();
$ F$ D' l9 @2 ?return 0;
, p* G' v( b. i3 M" s}
7 ^# Z+ K: t7 u/ O: F' |+ S# C</FONT>
0 g4 K& }5 w0 a- ]</P>8 R# H3 `* X3 u$ A3 T: W' n
<P><FONT color=#ff0000>函数名: movetext</FONT>
( t# P# v: H( e5 y功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域 7 F( `( f# h( L% Q
用 法: int movetext(int left, int top, int right, int bottom,
* O: o+ t; J+ B! O# L3 \& Hint newleft, int newtop); 7 w8 j! ^- v* E$ u1 G& B& X( Y
程序例:
! I/ o. S0 L' O2 N* N<FONT color=#0000ff>#include <CONIO.H>( a" i! B; B# k; C+ I; I
#include <STRING.H></FONT></P>
+ A8 p4 K* e: b2 Y<P><FONT color=#0000ff>int main(void)
+ R" i! i  J0 T/ X1 G{
* p( ?3 t/ v* p$ v5 r# ?char *str = "This is a test string"; </FONT></P>" a# j- y* S2 q# y' R
<P><FONT color=#0000ff>clrscr();
7 v  C# O+ i6 }, j* rcputs(str); 8 M: j6 X6 Q+ Y( r- q
getch(); </FONT></P>" R& T6 ^, d) e5 U6 }% g4 P& r& U
<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10); 6 g5 e8 `$ k# X, I
getch(); </FONT></P>: K6 r- O* y4 r( [0 |3 a
<P><FONT color=#0000ff>return 0; ( p% h2 F5 U, H5 g* e7 m
} % A- J4 H! H5 W/ f( E' B

. u, L$ n% ?, c# L: y" e, n( @</FONT></P>
# u, S; p2 z5 `: p<P><FONT color=#ff0000>函数名: moveto</FONT> 8 M* t! N. m3 h2 c, F' G
功 能: 将CP移到(x, y)
8 l2 c' |& @. h, q( o用 法: void far moveto(int x, int y); 5 v, k. d' T, n% P' t( x
程序例: </P>; s, @6 b- P% @
<P><FONT color=#0000ff>#include <GRAPHICS.H>
3 d" f& ~7 \  G( [#include <STDLIB.H>& S5 K' |8 B  A" w" Z9 e
#include <STDIO.H>
: t" \% h1 B5 j7 ~% Z#include <CONIO.H></FONT></P>
5 i3 v; Y% T$ ~4 k<P><FONT color=#0000ff>int main(void) * v' ?. i* m9 c% G  B* L0 q( w
{ % n. R& R6 _; N
/* request auto detection */
  E5 B0 p5 S: t- dint gdriver = DETECT, gmode, errorcode;
; C) a$ B( M4 A) F8 uchar msg[80]; </FONT></P>, [' e) C' r, v
<P><FONT color=#0000ff>/* initialize graphics and local variables */
  O; b; W& B. |. xinitgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>
% w- ^; U0 W& R<P><FONT color=#0000ff>/* read result of initialization */
  f/ R3 n5 g3 x- `( p. J! Herrorcode = graphresult(); : k9 n- x7 h3 E1 b: y1 b& V
if (errorcode != grOk) /* an error occurred */ 6 M/ i1 W" u' \) @9 B& R& D2 n
{
; I( t8 s6 _: L- rprintf("Graphics error: %s\n", grapherrormsg(errorcode)); : L- O- J: n1 K( J5 N
printf("Press any key to halt:");
5 [0 K/ l0 C& Z! I6 sgetch(); 1 y: F4 R0 X* y6 p3 l$ g: w
exit(1); /* terminate with an error code */ 4 ]. A. G3 X' a+ q3 y
} </FONT></P>
; U0 M6 e- H! c3 I<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ : l3 N& i1 ]! `) h2 B* k  [$ }! G
moveto(20, 30); </FONT></P>2 G$ @$ ^- i% q5 `
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
0 j" r3 J" f8 Qputpixel(getx(), gety(), getmaxcolor()); </FONT></P>: N/ \( F+ P) s& d; J
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
. x$ G' M8 b5 ?) z3 `) fsprintf(msg, " (%d, %d)", getx(), gety()); 7 E( [5 L9 r" f& G# c3 c* U! v
outtextxy(20, 30, msg); </FONT></P>5 e, x1 B  v5 u( t( i
<P><FONT color=#0000ff>/* move to (100, 100) */
8 X1 d6 C' q) |2 l+ O+ C' `2 jmoveto(100, 100); </FONT></P>
! t( w& ]" s2 a  f<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
2 I: p; C4 n2 ^' J0 I' mputpixel(getx(), gety(), getmaxcolor()); </FONT></P>
3 g9 {/ s3 b* j) R<P><FONT color=#0000ff>/* create and output a message at C.P. */
( x( p; d$ v- E4 o/ b: Ysprintf(msg, " (%d, %d)", getx(), gety()); 1 z4 c. ^' g( B$ m1 u
outtext(msg); </FONT></P>
, a0 {5 P5 e4 T, C% \. a. I<P><FONT color=#0000ff>/* clean up */
+ g( [' S9 {+ _& X+ cgetch();
' I9 I3 r0 t* q# \, sclosegraph();
! N6 I6 F0 ^- ?% freturn 0;
' j' z. Z2 a4 C: F7 F! w} - r3 m: o0 X1 u2 j; y' j3 K
</FONT>& V  c; R% O3 s) y3 x
</P>
4 e% q; F8 }; `' h/ t8 y<P><FONT color=#ff0000>函数名: movemem </FONT>
/ I5 k6 _" @4 L. U2 I* u) d; ~5 r功 能: 移动一块字节
$ ?7 _1 n+ ^+ K1 g2 C4 V/ E: b7 k用 法: void movemem(void *source, void *destin, unsigned len);
6 c% P( t4 F$ E& ~程序例: </P>
2 D, S: x! k2 Z6 I& p9 D( r<P><FONT color=#0000ff>#include <MEM.H># [" W% s, w6 Z+ f; p
#include <ALLOC.H>5 `6 k2 i) I) R0 r* W  Z
#include <STDIO.H>
+ M; B- l: {- B; z#include <STRING.H></FONT></P>
$ @5 c! _% K& X2 A- O% o; a, h; e. c<P><FONT color=#0000ff>int main(void)
) }4 u+ O, Z. f* l{   F, Z2 C. |% H
char *source = "Borland International";
1 `5 v" D! j# ~" tchar *destination;
, f# o5 B: v6 A$ t/ n- J$ v. p; oint length; </FONT></P>  C# r) j% s: O8 T
<P><FONT color=#0000ff>length = strlen(source); ( L# A; x* r9 g( M5 D: S9 G/ W- \7 R
destination = malloc(length + 1); 3 d- G% a: c% v8 [* X
movmem(source,destination,length);
( x8 \' l7 c6 P" A2 A  K# \1 @printf("%s\n",destination); </FONT></P>: T+ b! ]$ N" q) `. B' c
<P><FONT color=#0000ff>return 0; 8 ]" z" M: l; g, n% G% Y
} - T- e% ^2 t( q, D5 W

  ?! u6 c4 R0 E7 V( @% p) @5 k3 t- Y</FONT></P>/ x0 {5 G! N& l# F9 q
<P><FONT color=#ff0000>函数名: normvideo </FONT>
8 }: X( G8 w' y8 h7 M# v8 p功 能: 选择正常亮度字符
4 e; L$ ^: q6 `5 W5 \9 g2 y8 l8 s# \用 法: void normvideo(void);
% E" L- P2 T1 _1 {程序例: </P>
# [# f# L0 R* K4 e' s<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>
, c2 e5 \8 B) L+ G<P><FONT color=#0000ff>int main(void)
8 C% K) D% k$ f, f/ g{
/ J( G% A9 _* K2 lnormvideo(); & ?) U" _' P, o8 v% v
cprintf("NORMAL Intensity Text\r\n"); * N- r: p- c+ F, u
return 0;
1 d' ?8 Y; u1 Q. ^9 U} 9 H/ Q3 Y; q# t4 G: O

( M6 ~3 u# ^% u7 S, C' _$ N% F</FONT></P>* R; M% A( R+ V+ v! Q( X$ i: O5 B
<P><FONT color=#ff0000>函数名: nosound</FONT> ; k& A" O2 [) \" R  c' t  s
功 能: 关闭PC扬声器
% T; G* x5 K: b0 C. ^( R* e7 G用 法: void nosound(void); % F  x7 ?" L- [
程序例: </P>; h9 R4 q1 Z! N9 @. w
<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>
$ _) L$ e5 l7 A3 |<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity. & {2 h' u, @/ \6 S. U/ ]
This was determined empirically in Australia, where a new factory + x1 {3 {6 Y- C1 _
generating 7-Hz tones was located too close to a chicken ranch: ; w% K1 R* ~9 ^; [# Y
When the factory started up, all the chickens died. </FONT></P>
( X- Z! o$ q# D7 v( K! W9 c<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone. / g: I, V: h  Z) L, A- N  M
*/ </FONT></P>
( t9 g, z  y7 J4 F' j' C* O<P><FONT color=#0000ff>int main(void)
# N$ X  \1 Q; P" g8 l5 b1 e{ # E- e* Q# g: F- K; T* C1 z' Y
sound(7); ! m* X) |  \+ B* e
delay(10000); & V3 b: ^3 D' L/ S' T1 d' M
nosound(); ( U1 J5 A- a' w- \5 E. |, I2 B8 `
}. c! h% z* V! J+ B
</FONT></P>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-6-12 14:50 , Processed in 4.296828 second(s), 52 queries .

回顶部