⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fm.htm

📁 turbo c
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML><HEAD>   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">   <META NAME="Author" CONTENT="wdg">   <META NAME="GENERATOR" CONTENT="Mozilla/4.03 [en] (Win95; I) [Netscape]">   <TITLE>fm</TITLE></HEAD><BODY>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main()主函数<P>&nbsp;&nbsp;&nbsp; 每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某<BR>个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放<BR>在哪个地方, 以下几点说明都是适合的。<BR>&nbsp;&nbsp;&nbsp; 1. main() 参数<BR>&nbsp;&nbsp;&nbsp; 在Turbo C2.0启动过程中, 传递main()函数三个参数:argc, argv和env。<BR>&nbsp;&nbsp;&nbsp;&nbsp; * argc:&nbsp; 整数, 为传给main()的命令行参数个数。<BR>&nbsp;&nbsp;&nbsp;&nbsp; * argv:&nbsp; 字符串数组。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以下的版本, argv[0]为空串("") 。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argv[1] 为在DOS命令行中执行程序名后的第一个字符串;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argv[2] 为执行程序名后的第二个字符串;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argv[argc]为NULL。<BR>&nbsp;&nbsp;&nbsp;&nbsp; *env:&nbsp; 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符<BR>串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS,C:<BR>\TURBOC(对于PATH) 或YES(对于87)。<BR>&nbsp;&nbsp;&nbsp; Turbo C2.0启动时总是把这三个参数传递给main()函数,可以在用户程序中<BR>说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序<BR>的局部变量。<BR>&nbsp;&nbsp;&nbsp; 请注意: 一旦想说明这些参数, 则必须按argc, argv,env 的顺序, 如以下<BR>的例子:<BR>&nbsp;&nbsp;&nbsp;&nbsp; main()<BR>&nbsp;&nbsp;&nbsp;&nbsp; main(int argc)<BR>&nbsp;&nbsp;&nbsp;&nbsp; main(int argc, char *argv[])<BR>&nbsp;&nbsp;&nbsp;&nbsp; main(int argc, char *argv[], char *env[])<BR>&nbsp;&nbsp;&nbsp; 其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc,而不<BR>用argv[]的情况。<BR>&nbsp;&nbsp;&nbsp; 以下提供一样例程序EXAMPLE.EXE,&nbsp; 演示如何在main()函数中使用三个参数:<BR>&nbsp;&nbsp;&nbsp;&nbsp; /*program name EXAMPLE.EXE*/<BR>&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;stdio.h><BR>&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;stdlib.h><BR>&nbsp;&nbsp;&nbsp;&nbsp; main(int argc, char *argv[], char *env[])<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Theseare the %d&nbsp; command- line&nbsp; arguments passed&nbsp; to<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main:\n\n", argc);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0; i&lt;=argc;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("argv[%d]:%s\n", i, argv[i]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("\nTheenvironment string(s)on this system are:\n\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0; env[i]!=NULL;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(" env[%d]:%s\n", i, env[i]);<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; 如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:<BR>&nbsp;&nbsp;&nbsp; C:\example first_argument "argument with blanks"&nbsp;3&nbsp; 4&nbsp; "last&nbsp; but<BR>one" stop!<BR>&nbsp;&nbsp;&nbsp; 注意: 可以用双引号括起内含空格的参数, 如本例中的:&nbsp;&nbsp;"&nbsp; argument<BR>with blanks"和"Last but one")。<BR>&nbsp;&nbsp;&nbsp; 结果是这样的:<BR>&nbsp;&nbsp;&nbsp;&nbsp; The value of argc is 7<BR>&nbsp;&nbsp;&nbsp;&nbsp; These are the 7 command-linearguments passedto main:<BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[0]:C:\TURBO\EXAMPLE.EXE<BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[1]:first_argument<BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[2]:argument with blanks<BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[3]:3<BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[4]:4<BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[5]:last but one<BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[6]:stop!<BR>&nbsp;&nbsp;&nbsp;&nbsp; argv[7]:(NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp; The environment string(s) on this system are:<BR>&nbsp;&nbsp;&nbsp;&nbsp; env[0]: COMSPEC=C:\COMMAND.COM<BR>&nbsp;&nbsp;&nbsp;&nbsp; env[1]: PROMPT=$P$G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*视具体设置而定*/<BR>&nbsp;&nbsp;&nbsp;&nbsp; env[2]: PATH=C:\DOS;C:\TC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*视具体设置而定*/<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 应该提醒的是: 传送main() 函数的命令行参数的最大长度为128个字符 (包<BR>括参数间的空格),&nbsp; 这是由DOS 限制的。<BR>&nbsp;<P>函数名: matherr<BR>功&nbsp; 能: 用户可修改的数学错误处理程序<BR>用&nbsp; 法: int matherr(struct exception *e);<BR>程序例:<P>/* This is a user-defined matherr function that prevents<BR>&nbsp;&nbsp; any error messages from being printed. */<P>#include&lt;math.h><P>int matherr(struct exception *a)<BR>{<BR>&nbsp;&nbsp; return 1;<BR>}<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<P>函数名: memccpy<BR>功&nbsp; 能: 从源source中拷贝n个字节到目标destin中<BR>用&nbsp; 法: void *memccpy(void *destin, void *source, unsigned charch,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned n);<BR>程序例:<P>#include &lt;string.h><BR>#include &lt;stdio.h><P>int main(void)<BR>{<BR>&nbsp;&nbsp; char *src = "This is the source string";<BR>&nbsp;&nbsp; char dest[50];<BR>&nbsp;&nbsp; char *ptr;<P>&nbsp;&nbsp; ptr = memccpy(dest, src, 'c', strlen(src));<P>&nbsp;&nbsp; if (ptr)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *ptr = '\0';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("The character was found:&nbsp;%s\n", dest);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("The character wasn't found\n");<BR>&nbsp;&nbsp; return 0;<BR>}<BR>&nbsp;<BR>&nbsp;<P>函数名: malloc<BR>功&nbsp; 能: 内存分配函数<BR>用&nbsp; 法: void *malloc(unsigned size);<BR>程序例:<P>#include &lt;stdio.h><BR>#include &lt;string.h><BR>#include &lt;alloc.h><BR>#include &lt;process.h><P>int main(void)<BR>{<BR>&nbsp;&nbsp; char *str;<P>&nbsp;&nbsp; /* allocate memory for string */<BR>&nbsp;&nbsp; /* This will generate an error when compiling */<BR>&nbsp;&nbsp; /* with C++, use the new operator instead. */<BR>&nbsp;&nbsp; if ((str = malloc(10)) == NULL)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Not enough memory to allocatebuffer\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);&nbsp; /* terminate programif out of memory */<BR>&nbsp;&nbsp; }<P>&nbsp;&nbsp; /* copy "Hello" into string */<BR>&nbsp;&nbsp; strcpy(str, "Hello");<P>&nbsp;&nbsp; /* display string */<BR>&nbsp;&nbsp; printf("String is %s\n", str);<P>&nbsp;&nbsp; /* free memory */<BR>&nbsp;&nbsp; free(str);<P>&nbsp;&nbsp; return 0;<BR>}<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<P>函数名: memchr<BR>功&nbsp; 能: 在数组的前n个字节中搜索字符<BR>用&nbsp; 法: void *memchr(void *s, char ch, unsigned n);<BR>程序例:<P>#include &lt;string.h><BR>#include &lt;stdio.h><P>int main(void)<BR>{<BR>&nbsp;&nbsp; char str[17];<BR>&nbsp;&nbsp; char *ptr;<P>&nbsp;&nbsp; strcpy(str, "This is a string");<BR>&nbsp;&nbsp; ptr = memchr(str, 'r', strlen(str));<BR>&nbsp;&nbsp; if (ptr)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("The character 'r' is at position:%d\n", ptr - str);<BR>&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("The character was not found\n");<BR>&nbsp;&nbsp; return 0;<BR>}<BR>&nbsp;<P>函数名: memcpy<BR>功&nbsp; 能: 从源source中拷贝n个字节到目标destin中<BR>用&nbsp; 法: void *memcpy(void *destin, void *source, unsigned n);<BR>程序例:<P>#include &lt;stdio.h><BR>#include &lt;string.h><BR>int main(void)<BR>{<BR>&nbsp;&nbsp; char src[] = "******************************";<BR>&nbsp;&nbsp; char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";<BR>&nbsp;&nbsp; char *ptr;<BR>&nbsp;&nbsp; printf("destination before memcpy: %s\n", dest);<BR>&nbsp;&nbsp; ptr = memcpy(dest, src, strlen(src));<BR>&nbsp;&nbsp; if (ptr)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("destination after memcpy:&nbsp;%s\n", dest);<BR>&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("memcpy failed\n");<BR>&nbsp;&nbsp; return 0;<BR>}<BR>&nbsp;<BR>&nbsp;<P>函数名: memicmp<BR>功&nbsp; 能: 比较两个串s1和s2的前n个字节, 忽略大小写<BR>用&nbsp; 法: int memicmp(void *s1, void *s2, unsigned n);<BR>程序例:<P>#include &lt;stdio.h><BR>#include &lt;string.h><P>int main(void)<BR>{<BR>&nbsp;&nbsp; char *buf1 = "ABCDE123";<BR>&nbsp;&nbsp; char *buf2 = "abcde456";<BR>&nbsp;&nbsp; int stat;<BR>&nbsp;&nbsp; stat = memicmp(buf1, buf2, 5);<BR>&nbsp;&nbsp; printf("The strings to position 5 are ");<BR>&nbsp;&nbsp; if (stat)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("not ");<BR>&nbsp;&nbsp; printf("the same\n");<BR>&nbsp;&nbsp; return 0;<BR>}<BR>&nbsp;<BR>&nbsp;<P>函数名: memmove<BR>功&nbsp; 能: 移动一块字节<BR>用&nbsp; 法: void *memmove(void *destin, void *source, unsigned n);<BR>程序例:<P>#include &lt;string.h><BR>#include &lt;stdio.h><P>int main(void)<BR>{<BR>&nbsp; char *dest = "abcdefghijklmnopqrstuvwxyz0123456789";<BR>&nbsp; char *src = "******************************";<BR>&nbsp; printf("destination prior to memmove: %s\n", dest);<BR>&nbsp; memmove(dest, src, 26);<BR>&nbsp; printf("destination after memmove:&nbsp;&nbsp;&nbsp; %s\n",dest);<BR>&nbsp; return 0;<BR>}<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<P>函数名: memset<BR>功&nbsp; 能: 设置s中的所有字节为ch, s数组的大小由n给定<BR>用&nbsp; 法: void *memset(void *s, char ch, unsigned n);<BR>程序例:<P>#include &lt;string.h><BR>#include &lt;stdio.h><BR>#include &lt;mem.h><P>int main(void)<BR>{<BR>&nbsp;&nbsp; char buffer[] = "Hello world\n";<P>&nbsp;&nbsp; printf("Buffer before memset: %s\n", buffer);<BR>&nbsp;&nbsp; memset(buffer, '*', strlen(buffer) - 1);<BR>&nbsp;&nbsp; printf("Buffer after memset:&nbsp; %s\n", buffer);<BR>&nbsp;&nbsp; return 0;<BR>}<BR>&nbsp;<BR>&nbsp;<P>函数名: mkdir<BR>功&nbsp; 能: 建立一个目录<BR>用&nbsp; 法: int mkdir(char *pathname);<BR>程序例:<P>#include &lt;stdio.h><BR>#include &lt;conio.h><BR>#include &lt;process.h><BR>#include &lt;dir.h><P>int main(void)<BR>{<BR>&nbsp; int status;<P>&nbsp;&nbsp; clrscr();<BR>&nbsp;&nbsp; status = mkdir("asdfjklm");<BR>&nbsp;&nbsp; (!status) ? (printf("Directory created\n")) :<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(printf("Unable to create directory\n"));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -