王朝网络
分享
 
 
 

C语言库函数(M类字母)

王朝c/c++·作者佚名  2008-06-01
宽屏版  字体: |||超大  

main()主函数

每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某

个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放

在哪个地方, 以下几点说明都是适合的。

1. main() 参数

在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。

* argc: 整数, 为传给main()的命令行参数个数。

* argv: 字符串数组。

在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0

以下的版本, argv[0]为空串("") 。

argv[1] 为在DOS命令行中执行程序名后的第一个字符串;

argv[2] 为执行程序名后的第二个字符串;

...

argv[argc]为NULL。

*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符

串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C:

\TURBOC(对于PATH) 或YES(对于87)。

Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中

说明(或不说明)它们, 假如说明了部分(或全部)参数, 它们就成为main()子程序

的局部变量。

请注重: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下

的例子:

main()

main(int argc)

main(int argc, char *argv[])

main(int argc, char *argv[], char *env[])

其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不

用argv[]的情况。

以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:

/*program name EXAMPLE.EXE*/

#include <stdio.h>

#include <stdlib.h>

main(int argc, char *argv[], char *env[])

{

int i;

printf("These are the %d command- line arguments passed to

main:\n\n", argc);

for(i=0; i<=argc; i++)

printf("argv[%d]:%s\n", i, argv[i]);

printf("\nThe environment string(s)on this system are:\n\n");

for(i=0; env[i]!=NULL; i++)

printf(" env[%d]:%s\n", i, env[i]);

}

假如在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:

C:\example first_argument "argument with blanks" 3 4 "last but

one" stop!

注重: 可以用双引号括起内含空格的参数, 如本例中的: " argument

with blanks"和"Last but one")。

结果是这样的:

The value of argc is 7

These are the 7 command-linearguments passed to main:

argv[0]:C:\TURBO\EXAMPLE.EXE

argv[1]:first_argument

argv[2]:argument with blanks

argv[3]:3

argv[4]:4

argv[5]:last but one

argv[6]:stop!

argv[7]:(NULL)

The environment string(s) on this system are:

env[0]: COMSPEC=C:\COMMAND.COM

env[1]: PROMPT=$P$G /*视具体设置而定*/

env[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/

应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包

括参数间的空格), 这是由DOS 限制的。

函数名: matherr

功 能: 用户可修改的数学错误处理程序

用 法: int matherr(strUCt exception *e);

程序例:

/* This is a user-defined matherr function that prevents

any error messages from being printed. */

#include<math.h>

int matherr(struct exception *a)

{

return 1;

}

函数名: memccpy

功 能: 从源source中拷贝n个字节到目标destin中

用 法: void *memccpy(void *destin, void *source, unsigned char ch,

unsigned n);

程序例:

#include <string.h>

#include <stdio.h>

int main(void)

{

char *src = "This is the source string";

char dest[50];

char *ptr;

ptr = memccpy(dest, src, 'c', strlen(src));

if (ptr)

{

*ptr = '\0';

printf("The character was found: %s\n", dest);

}

else

printf("The character wasn't found\n");

return 0;

}

函数名: malloc

功 能: 内存分配函数

用 法: void *malloc(unsigned size);

程序例:

#include <stdio.h>

#include <string.h>

#include <alloc.h>

#include <process.h>

int main(void)

{

char *str;

/* allocate memory for string */

/* This will generate an error when compiling */

/* with C++, use the new operator instead. */

if ((str = malloc(10)) == NULL)

{

printf("Not enough memory to allocate buffer\n");

exit(1); /* terminate program if out of memory */

}

/* copy "Hello" into string */

strcpy(str, "Hello");

/* display string */

printf("String is %s\n", str);

/* free memory */

free(str);

return 0;

}

函数名: memchr

功 能: 在数组的前n个字节中搜索字符

用 法: void *memchr(void *s, char ch, unsigned n);

程序例:

#include <string.h>

#include <stdio.h>

int main(void)

{

char str[17];

char *ptr;

strcpy(str, "This is a string");

ptr = memchr(str, 'r', strlen(str));

if (ptr)

printf("The character 'r' is at position: %d\n", ptr - str);

else

printf("The character was not found\n");

return 0;

}

函数名: memcpy

功 能: 从源source中拷贝n个字节到目标destin中

用 法: void *memcpy(void *destin, void *source, unsigned n);

程序例:

#include <stdio.h>

#include <string.h>

int main(void)

{

char src[] = "******************************";

char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";

char *ptr;

printf("destination before memcpy: %s\n", dest);

ptr = memcpy(dest, src, strlen(src));

if (ptr)

printf("destination after memcpy: %s\n", dest);

else

printf("memcpy failed\n");

return 0;

}

函数名: memicmp

功 能: 比较两个串s1和s2的前n个字节, 忽略大小写

用 法: int memicmp(void *s1, void *s2, unsigned n);

程序例:

#include <stdio.h>

#include <string.h>

int main(void)

{

char *buf1 = "ABCDE123";

char *buf2 = "abcde456";

int stat;

stat = memicmp(buf1, buf2, 5);

printf("The strings to position 5 are ");

if (stat)

printf("not ");

printf("the same\n");

return 0;

}

函数名: memmove

功 能: 移动一块字节

用 法: void *memmove(void *destin, void *source, unsigned n);

程序例:

#include <string.h>

#include <stdio.h>

int main(void)

{

char *dest = "abcdefghijklmnopqrstuvwxyz0123456789";

char *src = "******************************";

printf("destination prior to memmove: %s\n", dest);

memmove(dest, src, 26);

printf("destination after memmove: %s\n", dest);

return 0;

}

函数名: memset

功 能: 设置s中的所有字节为ch, s数组的大小由n给定

用 法: void *memset(void *s, char ch, unsigned n);

程序例:

#include <string.h>

#include <stdio.h>

#include <mem.h>

int main(void)

{

char buffer[] = "Hello world\n";

printf("Buffer before memset: %s\n", buffer);

memset(buffer, '*', strlen(buffer) - 1);

printf("Buffer after memset: %s\n", buffer);

return 0;

}

函数名: mkdir

功 能: 建立一个目录

用 法: int mkdir(char *pathname);

程序例:

#include <stdio.h>

#include <conio.h>

#include <process.h>

#include <dir.h>

int main(void)

{

int status;

clrscr();

status = mkdir("asdfjklm");

(!status) ? (printf("Directory created\n")) :

(printf("Unable to create directory\n"));

getch();

system("dir");

getch();

status = rmdir("asdfjklm");

(!status) ? (printf("Directory deleted\n")) :

(perror("Unable to delete directory"));

return 0;

}

函数名: mktemp

功 能: 建立唯一的文件名

用 法: char *mktemp(char *template);

程序例:

#include <dir.h>

#include <stdio.h>

int main(void)

{

/* fname defines the template for the

temporary file. */

char *fname = "TXXXXXX", *ptr;

ptr = mktemp(fname);

printf("%s\n",ptr);

return 0;

}

函数名: MK_FP

功 能: 设置一个远指针

用 法: void far *MK_FP(unsigned seg, unsigned off);

程序例:

#include <dos.h>

#include <graphics.h>

int main(void)

{

int gd, gm, i;

unsigned int far *screen;

detectgraph(&gd, &gm);

if (gd == HERCMONO)

screen = MK_FP(0xB000, 0);

else

screen = MK_FP(0xB800, 0);

for (i=0; i<26; i++)

screen[i] = 0x0700 + ('a' + i);

return 0;

}

函数名: modf

功 能: 把数分为指数和尾数

用 法: double modf(double value, double *iptr);

程序例:

#include <math.h>

#include <stdio.h>

int main(void)

{

double fraction, integer;

double number = 100000.567;

fraction = modf(number, &integer);

printf("The whole and fractional parts of %lf are %lf and %lf\n",

number, integer, fraction);

return 0;

}

函数名: movedata

功 能: 拷贝字节

用 法: void movedata(int segsrc, int offsrc, int segdest,

int offdest, unsigned numbytes);

程序例:

#include <mem.h>

#define MONO_BASE 0xB000

/* saves the contents of the monochrome screen in buffer */

void save_mono_screen(char near *buffer)

{

movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2);

}

int main(void)

{

char buf[80*25*2];

save_mono_screen(buf);

}

函数名: moverel

功 能: 将当前位置(CP)移动一相对距离

用 法: void far moverel(int dx, int dy);

程序例:

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

/* request auto detection */

int gdriver = DETECT, gmode, errorcode;

char msg[80];

/* initialize graphics and local variables */

initgraph(&gdriver, &gmode, "");

/* read result of initialization */

errorcode = graphresult();

if (errorcode != grOk) /* an error occurred */

{

printf("Graphics error: %s\n", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1); /* terminate with an error code */

}

/* move the C.P. to location (20, 30) */

moveto(20, 30);

/* plot a pixel at the C.P. */

putpixel(getx(), gety(), getmaxcolor());

/* create and output a message at (20, 30) */

sprintf(msg, " (%d, %d)", getx(), gety());

outtextxy(20, 30, msg);

/* move to a point a relative distance */

/* away from the current value of C.P. */

moverel(100, 100);

/* plot a pixel at the C.P. */

putpixel(getx(), gety(), getmaxcolor());

/* create and output a message at C.P. */

sprintf(msg, " (%d, %d)", getx(), gety());

outtext(msg);

/* clean up */

getch();

closegraph();

return 0;

}

函数名: movetext

功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域

用 法: int movetext(int left, int top, int right, int bottom,

int newleft, int newtop);

程序例:

#include <conio.h>

#include <string.h>

int main(void)

{

char *str = "This is a test string";

clrscr();

cputs(str);

getch();

movetext(1, 1, strlen(str), 2, 10, 10);

getch();

return 0;

}

函数名: moveto

功 能: 将CP移到(x, y)

用 法: void far moveto(int x, int y);

程序例:

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

/* request auto detection */

int gdriver = DETECT, gmode, errorcode;

char msg[80];

/* initialize graphics and local variables */

initgraph(&gdriver, &gmode, "");

/* read result of initialization */

errorcode = graphresult();

if (errorcode != grOk) /* an error occurred */

{

printf("Graphics error: %s\n", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1); /* terminate with an error code */

}

/* move the C.P. to location (20, 30) */

moveto(20, 30);

/* plot a pixel at the C.P. */

putpixel(getx(), gety(), getmaxcolor());

/* create and output a message at (20, 30) */

sprintf(msg, " (%d, %d)", getx(), gety());

outtextxy(20, 30, msg);

/* move to (100, 100) */

moveto(100, 100);

/* plot a pixel at the C.P. */

putpixel(getx(), gety(), getmaxcolor());

/* create and output a message at C.P. */

sprintf(msg, " (%d, %d)", getx(), gety());

outtext(msg);

/* clean up */

getch();

closegraph();

return 0;

}

函数名: movemem

功 能: 移动一块字节

用 法: void movemem(void *source, void *destin, unsigned len);

程序例:

#include <mem.h>

#include <alloc.h>

#include <stdio.h>

#include <string.h>

int main(void)

{

char *source = "Borland International";

char *destination;

int length;

length = strlen(source);

destination = malloc(length + 1);

movmem(source,destination,length);

printf("%s\n",destination);

return 0;

}

函数名: normvideo

功 能: 选择正常亮度字符

用 法: void normvideo(void);

程序例:

#include <conio.h>

int main(void)

{

normvideo();

cprintf("NORMAL Intensity Text\r\n");

return 0;

}

函数名: nosound

功 能: 关闭PC扬声器

用 法: void nosound(void);

程序例:

/* Emits a 7-Hz tone for 10 seconds.

True story: 7 Hz is the resonant frequency of a chicken's skull cavity.

This was determined empirically in Australia, where a new factory

generating 7-Hz tones was located too close to a chicken ranch:

When the factory started up, all the chickens died.

Your PC may not be able to emit a 7-Hz tone.

*/

int main(void)

{

sound(7);

delay(10000);

nosound();

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有