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]);
}
函数名: detectgraph
功 能: 通过检测硬件确定图形驱动程序和模式
用 法: void far detectgraph(int far *graphdriver, int far *graphmode);
函数名: circle
功 能: 在给定半径以(x, y)为圆心画圆
用 法: void far circle(int x, int y, int radius);
函数名: closegraph
功 能: 关闭图形系统
用 法: void far closegraph(void);
exit 函数
函数名: exit
功 能: 终止程序
用 法: void exit(int status);
fabs 函数
函数名: fabs
功 能: 返回浮点数的绝对值
用 法: double fabs(double x);
函数名: farfree
功 能: 从远堆中释放一块
用 法: void farfree(void);
函数名: farmalloc
功 能: 从远堆中分配存储块
用 法: void far *farmalloc(unsigned long size);
函数名: fclose
功 能: 关闭一个流
用 法: int fclose(FILE *stream);
函数名: feof
功 能: 检测流上的文件结束符
用 法: int feof(FILE *stream);
函数名: ferror
功 能: 检测流上的错误
用 法: int ferror(FILE *stream);
函数名: fopen
功 能: 打开一个流
用 法: FILE *fopen(char *filename, char *type);
函数名: fprintf
功 能: 传送格式化输出到一个流中
用 法: int fprintf(FILE *stream, char *format[, argument,...]);
函数名: fread
功 能: 从一个流中读数据
用 法: int fread(void *ptr, int size, int nitems, FILE *stream);
函数名: free
功 能: 释放已分配的块
用 法: void free(void *ptr);
函数名: fscanf
功 能: 从一个流中执行格式化输入
用 法: int fscanf(FILE *stream, char *format[,]);
函数名: setbkcolor
功 能: 用调板设置当前背景颜
用 法: void far setbkcolor(int color);
函数名: setcolor
功 能: 设置当前画线颜
用 法: void far setcolor(int color);
sqrt 函数
函数名: sqrt
功 能: 计算平方根
用 法: double sqrt(double x);
strcat 函数
函数名: strcat
功 能: 字符串拼接函数
用 法: char *strcat(char *destin, char *source);
strcmp 函数
函数名: strcmp
功 能: 串比较
用 法: int strcmp(char *str1, char *str2);
strcpy 函数
函数名: strcpy
功 能: 串拷贝
字符串长度函数c语言用 法: char *strcpy(char *str1, char *str2);
函数名:strlen
功 能:计算一个字符串的长度
用法:int strlen(const char *s)
函数名: fseek
功 能: 重定位流上的文件指针
用 法: int fseek(FILE *stream, long offset, int fromwhere);
函数名: fwrite
功 能: 写内容到流中
用 法: int fwrite(void *ptr, int size, int nitems, FILE *stream);
getch 函数
函数名: getch
功 能: 从控制台无回显地取一个字符
用 法: int getch(void);
getchar 函数
函数名: getchar
功 能: 从stdin流中读字符
用 法: int getchar(void);
gets 函数
函数名: gets
功 能: 从流中取一字符串
用 法: char *gets(char *string);
函数名: initgraph
功 能: 初始化图形系统
用 法: void far initgraph(int far *graphdriver, int far *graphmode,
char far *pathtodriver);
函数名: line
功 能: 在指定两点间画一直线
用 法: void far line(int x0, int y0, int x1, int y1);
函数名: malloc
功 能: 内存分配函数
用 法: void *malloc(unsigned size);
puts 函数
函数名: puts
功 能: 送一字符串到流中
用 法: int puts(char *string);
函数名: rectangle
功 能: 画一个矩形
用 法: void far rectangle(int left, int top, int right, int bottom);
函数名: rewind
功 能: 将文件指针重新指向一个流的开头
用 法: int rewind(FILE *stream);
printf函数
其功能是向终端输出若干个任意类型的数据。
(1) printf函数的一般形式为:
printf (格式控制字符串,变量1,变量2,…);
(2) printf函数中的格式说明:
① d格式说明。用来输出十进制整数,
? %d,按整数型数据的实际长度输出
? %md,m 为指定输出字段的宽度,如实际数据的位数小于m,则左端补空格
? %ld, 输出长整型数据。对long型数据,用%ld格式输出。可以指定字段宽度.
②o格式符,以八进制数形式输出,符号作为数的一部分输出。可以用“%lo”输出,可指定宽度.
③x格式符,以十六进制数形式输出,可不输出负号。用“%lx”输出长整数,可指定宽度.
④u格式符,用来输出无符号型(unsigned)数据,以十进制形式输出。
⑤ c格式说明。
%c格式,用来输出一个字符。整数的值在0~552之间.
⑥s格式说明。s格式用来输出一个字符串。
? %s,用来输出一个字符串
? %ms,输出的字符串占m列,如果字符串本身长度大于m,则突破m限制,将字符串全部输出。若串小于m,则左边补空格。
? %-ms,如果小于m列,则在m列范围内,字符串向左靠,右边补空格。
? %m.ns,输出占m列,但只取字符串中左边n个字符输出。这n个字符输出在m列的右侧,左补空格。
? %-m.ns,n个字符输出在m列范围内的左侧,右补空格。如果n>m,则m自动取n的值。
⑦f格式说明。f格式用来输出带小数点的单、双精度实数。
? %f不指定字段宽度,单精度有效数字位数一般为7位。有6位小数位。
? %m.nf 指定输出的数值共占m位,其中有n位小数。
?%-m.nf与%m.nf基本相同,只是使输出数值向左端靠,右端补空格。
⑧e格式符。以指数形式输出实数。
%e标准指数输出,由系统自动给出6位小数,
%m.ne和%-m.ne,其中n指尾数部分的小数位数。m为整个数值输出所至少占有的宽度。
⑨g格式说明。用来输出实数,它根据实数大小,自动选f格式或e格式(选择占宽度较小的一种),不输出无意义的零。用%f格式输出占10列。用%e格式输出占13列
scanf函数
(1) scanf函数的一般形式:
scanf(格式控制字符串,地址1,地址2,…);
① 格式说明符由“%”和格式字符组成其作用是将输入的数据转换为指定的格式,
② 普通字符,是需要用户在输入时原样
输入的字符。
输入数据时,两个数据之间以一个或多个空格间隔,也可以用回车键,跳格键tab。
但两个数据间不能用逗号等其他的字符。
而“%d,%d”亦表示按十进制输入两个数据。要求在输入数据时,两个数据间一定以一个逗号“,”作为间隔符。
(2) scanf中可用的格式说明:
对应不同类型数据的输入,scanf的格式控制字符串中可以使用不同的格式字符构成不同的格式说明。常用的格式说明如下:
格式字符串 功能
%d 用来输入十进制整数。
%o 用来输入八进制整数(前导零可有可无)。
%x 用来输入十六进制整数(前导零可有可无)。
%c 用来输入单个字符。
%s 用来输入字符串,字符串以串结束标志'\0'
%f 用来输入一个浮点实数。
%e 与%f的作用相同,e与f可以替换使用。
scanf附加的格式说明字符:
字符 说明
l 用于输入长整型数据,以及双精度型数据。
h 用于输入短整型数据。
域宽(为整数) 指定输入数据所占宽度(列数)。
* 表示本输入项在读入后不赋给任何相应的变量。
① 当指定输入数据所占列数后,系统将自动按它截取所需数据。
② %后的“*”附加说明符,用来跳过它相应的数据。
③ 输入数据时,精度可以规定,
(3) 使用scanf函数时应注意的问题:
① scanf函数中的第二个及以后各个参量是变量地址,
② 在用“%c”格式输入字符时,空格字符和“转义字符”都将作为有效的字符输入。
③ 在输入数据时,遇到下列情况时,输入数据认为结束:
? 遇空格或按“回车”或“跳格”(TAB)键;
? 遇宽度结束,如“%3d”,只取3列;
? 遇非法输入,
④使用多个scanf()函数连续给多个字符变量赋值,运行该程序,输入一个字符A后回车(要完成scanf()函数输入必须回车),在执行第二个scanf ( ).
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论