找回密码

碧海潮声大学生网

楼主: 墙角野猫
打印 上一主题 下一主题

c语言函数大全

[复制链接]
71#
 楼主| 发表于 2006-7-12 23:19 | 只看该作者
函数名: enable
功 能: 开放硬件中断
用 法: void enable(void);
程序例:
/* ** NOTE:
This is an interrupt service routine. You can NOT compile this program
with Test Stack Overflow turned on and get an executable file which will
operate correctly.
*/
#include
#include
#include
/* The clock tick interrupt */
#define INTR 0X1C
void interrupt ( *oldhandler)(void);
int count=0;
void interrupt handler(void)
{
/*
disable interrupts during the handling of the interrupt
*/
disable();
/* increase the global counter */
count++;
/*
re enable interrupts at the end of the handler
*/
enable();
/* call the old routine */
oldhandler();
}
int main(void)
{
/* save the old interrupt vector */
oldhandler = getvect(INTR);
/* install the new interrupt handler */
setvect(INTR, handler);
/* loop until the counter exceeds 20 */
while (count < 20)
printf("count is %d
",count);
/* reset the old interrupt handler */
setvect(INTR, oldhandler);
return 0;
}
72#
 楼主| 发表于 2006-7-12 23:20 | 只看该作者
函数名: eof
功 能: 检测文件结束
用 法: int eof(int *handle);
程序例:
#include
#include
#include
#include
#include
int main(void)
{
int handle;
char msg[] = "This is a test";
char ch;
/* create a file */
handle = open("DUMMY.FIL",
O_CREAT | O_RDWR,
S_IREAD | S_IWRITE);
/* write some data to the file */
write(handle, msg, strlen(msg));
/* seek to the beginning of the file */
lseek(handle, 0L, SEEK_SET);
/*
reads chars from the file until hit EOF
*/
do
{
read(handle, &ch, 1);
printf("%c", ch);
} while (!eof(handle));
close(handle);
return 0;
}
73#
 楼主| 发表于 2006-7-12 23:20 | 只看该作者
函数名: exec...
功 能: 装入并运行其它程序的函数
用 法: int execl(char *pathname, char *arg0, arg1, ..., argn, NULL);
int execle(char *pathname, char *arg0, arg1, ..., argn, NULL,
char *envp[]);
int execlp(char *pathname, char *arg0, arg1, .., NULL);
int execple(char *pathname, char *arg0, arg1, ..., NULL,
char *envp[]);
int execv(char *pathname, char *argv[]);
int execve(char *pathname, char *argv[], char *envp[]);
int execvp(char *pathname, char *argv[]);
int execvpe(char *pathname, char *argv[], char *envp[]);
程序例:
/* execv example */
#include
#include
#include
void main(int argc, char *argv[])
{
int i;
printf("Command line arguments:
");
for (i=0; i printf("[%2d] : %s
", i, argv);
printf("About to exec child with arg1 arg2 ...
");
execv("CHILD.EXE", argv);
perror("exec error");
exit(1);
}
74#
 楼主| 发表于 2006-7-12 23:21 | 只看该作者
函数名: exit
功 能: 终止程序
用 法: void exit(int status);
程序例:
#include
#include
#include
int main(void)
{
int status;
printf("Enter either 1 or 2
");
status = getch();
/* Sets DOS errorlevel */
exit(status - &#39;0&#39;);
/* Note: this line is never reached */
return 0;
}
75#
 楼主| 发表于 2006-7-12 23:22 | 只看该作者
函数名: exp
功 能: 指数函数
用 法: double exp(double x);
程序例:
#include
#include
int main(void)
{
double result;
double x = 4.0;
result = exp(x);
printf("&#39;e&#39; raised to the power \
of %lf (e ^ %lf) = %lf
",
x, x, result);
return 0;
}

double fabs(double x);
返回双精度x的绝对值。

void far *farcalloc(unsigned long nunits,unsigned long unitsz);
堆中给含有nu从远nits个元素的,每个元素占用unitsz个字节长的数组分配存贮区。
成功是返回指向新分配的内存块的指针;若存贮空间不够,返回NULL。

unsigned long farcoreleft(void);
返回远堆中未用存贮区的大小。

void farfree(void far *block);
释放远堆中以前所分配内存块。

void far *farmalloc(unsigned long nbytes);
从远堆分配长nbytes字节的内存块,返回新地址。

void far *farrealloc(void far *oldblock,unsigned long nbytes);
调整已分配的内存块的大小为nbytes。需要的话,可把块中的内容复制到新位置。要注意:所有的可用的RAM可被分配,大于64K的块可被分配。
远指针用于存取被分配的块。返回重新分配的内存块的地址。若存贮块重新分配失败,返回NULL。
struct fcb {
char fcb_drive; /* 0 = default, 1 = A, 2 = B */
char fcb_name[8]; /* File name */
char fcb_ext[3]; /* File extension */
short fcb_curblk; /* Current block number */
short fcb_recsize; /* Logical record size in bytes */
long fcb_filsize; /* File size in bytes */
short fcb_date; /* Date file was last written */
char fcb_resv[10]; /* Reserved for DOS */
char fcb_currec; /* Current record in block */
long fcb_random; /* Random record number */
};


int fclose(FILE *stream);
关闭一个流。
成功返回0;失败是返回EOF。
int fcloseall(void);
关闭所有打开的流,除了stdin,stdout,stdprn,stderr和stdaux。


char *fcvt(double value,int ndig,int *dec,int *sign);
把浮点数转换成字符串,把浮点数value转换成长度为ndig的以空字符终结的字符串,返回一个指向这个字符串的指针,相对于串的开始处,
小数点的位置,由dec间接存贮,dec若为负值,表示小数点在返回的字符串的左边。返回的字符串本身不带小数点。如果value的符号为负,由sign指向的值非零;否则它是零。


FILE *fdopen(int handle,char *type);
把流与一个文件描述字相联系地打开。fdopen使流stream与一个从creat,dup,dup2或open得到的文件描述字相联系。流的类型type必须与打开文件描述字handle的模式相匹配。
类型字符串type可以是下列值之一:
r,打开用于只读;
w,创建用于写;
a,打开用于写在原有内容后面,文件不存在时创建用于写;
r+,打开已存在的文件用于更新(读和写);
a+,添加打开,文件不存在时创建,在末尾更新。成功时返回新打开的流。出错时返回NULL。





int feof(FILE *stream);
测试所给stream的文件尾标记的宏。
若检测到文件尾标记EOF或Ctrl-z返回非零值;否则,返回0。

#include
int ferror(FILE *stream);
测试给定流读写错误的宏。
若检测到给定流上的错误返回非0值。
struct ffblk {
char ff_reserved[21];
char ff_attrib;
unsigned ff_ftime;
unsigned ff_fdate;
long ff_fsize;
char ff_name[13];
};


int fflush(FILE *stream);
清除输入流的缓冲区,使它仍然打开,并把输出流的缓冲区的内容写入它所联系的文件中。成功时返回0,出错时返回EOF。

int fgetc(FILE *stream);
从流中读取下一个字符。
成功是返回输入流中的下一个字符;至文件结束或出错时返回EOF。

int fgetchar(void);
从标准输入流中读取字符,时定义为getc(stdin)的宏。
返回输入流stdin中的下一个字符,它已被转换成为无符号扩展的整形值。遇到出错或文件结束时返回EOF。

int fgetpos(FILE stream,fpos_t *pos);
取得当前文件指针。
fgetpos把与stream相联系的文件指针的位置保存在pos所指的地方。
其中,类型fpos_t在stdio.h中定义为
typeddf long fpos_t;
成功时返回0;失败时,返回非0值。


char *fgets(char *s,int n,FILE *stream);
成行读。
从流stream读n-1个字符,或遇换行符&#39;
&#39;为止,把读出的内容,存入s中。与gets不同,fgets在s未尾保留换行符。一个空字节被加入到s,用来标记串的结束。
成功时返回s所指的字符串;在出错或遇到文件结束时返回NULL。

long filelength(int handle);
返回与handle相联系的文件长度的字节数,出错时返回-1L。

int fileno(FILE *stream);
返回与stream相联系的文件描述字。



int fileno(FILE *stream);
返回与stream相联系的文件描述字。

enum fill_patterns { /* Fill patterns for get/setfillstyle */
0 EMPTY_FILL, /* fills area in background color */
1 SOLID_FILL, /* fills area in solid fill color */
2 LINE_FILL, /* --- fill */
3 LTSLASH_FILL, /* /// fill */
4 SLASH_FILL, /* /// fill with thick lines */
5 BKSLASH_FILL, /* \\\ fill with thick lines */
6 LTBKSLASH_FILL, /* \\\ fill */
7 HATCH_FILL, /* light hatch fill */
8 XHATCH_FILL, /* heavy cross hatch fill */
9 INTERLEAVE_FILL, /* interleaving line fill */
10 WIDE_DOT_FILL, /* Widely spaced dot fill */
11 CLOSE_DOT_FILL, /* Closely spaced dot fill */
12 USER_FILL /* user defined fill */

void far fillellipse(int x,int y,int xradius,int yradius);
画一填充椭圆。
以(x,y)为中心,以xradius和yradius为水平和垂直半轴,用当前颜色画边线,画一椭圆,用当前填充颜色和填充方式填充。

int findfirst(const char *pathname,struct ffblk *ffblk,int attrib);
搜索磁盘目录。开始通过DOS系统调用0x4E对磁盘目录进行搜索。pathname中可含有要找的盘区路径文件名。
文件名中可含有通配符(如*或?)。如果找到了匹配的文件,把文件目录信息填入ffblk结构。
attrib是MS-DOS的文件属性字节,用于在搜索过程中选择符合条件的文件。
attrib可以是在dos.h中定义的下列可取值之一:FA_RDONLY,只读;FA_HIDDEN隐藏;FA_SYSTEM系统文件;FA_LABEL卷标;FA_DIREC,目录;FA_ARCH,档案.可参考>.
结构ffblk的格式如下:
struct ffblk{
char ff_reserved[21}; /*由DOS保留*/
char ff_attrib; /*属性查找*/
int ff_ftime; /*文件时间*/
int f_fdate; /*文件日期*/
long ff_fsize; /*文件大小*/
char ff_name[13}; /*找到的文件名*/

在成功的地找到了与搜索路径pathname相匹配的文件名后返回0;否则返回-1。


int findnext(xtruct ffblk *ffblk);继续按findfirst的pathname搜索磁盘目录。
成功地找到了与搜索路径pathname相匹配的后续文件名后返回0;否则返回-1。


void far floodfill(int x,int y, int border);
填充一个有界的区域。


double floor(double x);
返回〈=x的用双精度浮点数表示的最大整数。

int flushall(void);
清除所有缓冲区。
清除所有与打开输入流相联系的缓冲区,并把所有和打开输出流相联系的缓冲区的内容写入到各自的文件中,跟在flushall后面的读操作,从输入文件中读新数据到缓冲区中。
返回一个表示打开输入流和输出流总数的整数。


couble fmod (double x, double y);
返回x对y的模,即x/y的余数。


void fnmerge(char *path,const char *drive,const char *dir,const char *name,const char *ext);
由给定的盘区路径文件名扩展名等组成部分建立path。
如果drive给出X:,dir给出\DIR\SUBDIR\,name给出NAME,和.ext给出.EXT,根据给定的组成部分,可建立一个完整的盘区路径文件名path为:
X:\DIR\CUBDIR\NAME.EXT

int fnsplit(const char *path,char *drive,char *cir,char *name,char *ext);
可把由path给出的盘区路径文件名扩展名分解成为各自的组成部分.返回一整型数.


FILE*fopen (const char *filemane,const char *mode);
打开文件filemane返回相联系的流;出错返回NULL。
mode字符串的可取值有:r,打开用于读;w,打开用于写;a,打开用于在原有内容之后写;r+,打开已存在的文件用于更新(读和写);w+创建新文件用于更新;a+,打开用于在原有内容之后更新,若文件不存在就创建。


unsigned FP_OFF(void far *farptr);
返回远指针farptr的地址偏移量。


int fprintf(FILE *stream,const char *format[,argument,...]);
照原样抄写格式串format的内容到流stream中,每遇到一个%,就按规定的格式,依次输出一个表达式argument的值到流stream中,返回写的字符个数。出错时返回EOF。

FILE *stream;
void main( void )
{
long l;
float fp;
char s[81];
char c;
stream = fopen( "fscanf.txt", "w+" );
if( stream == NULL )
printf( "The file fscanf.out was not opened
" );
else {fprintf( stream, "%s %ld %f%c", "a-string",65000, 3.14159, &#39;x&#39; );
/* Set pointer to beginning of file: */
fseek( stream, 0L, SEEK_SET );
/* Read data back from file: */
fscanf( stream, "%s", s );
fscanf( stream, "%ld", &l );
fscanf( stream, "%f",
fscanf( stream, "%c", &c );/* Output data read: */
printf( "%s
", s );
printf( "%ld
", l );
printf( "%f
", fp );
printf( "%c
", c );
fclose( stream ); }
}


int fputc(int c,FILE *stream);
写一个字符到流中。
成功时返回所写的字符,失败或出错时返回EOF。

int fputchar(int c);
送一个字符到屏幕。
等价于fputc(c,stdout);成功时返回所写的字符,失败或出错时返回EOF。

int fputs(const char *s,FILE *stream);
把s所指的以空字符终结的字符串送入流中,不加换行符&#39;
&#39;,不拷贝串结束符&#39;\0&#39;。
成功时返回最后的字符,出错时返回EOF。

size_t fread(void *ptr,size_t size,size_t n,FILE *stream);
从所给的输入流stream中读取的n项数据,每一项数据长度为size字节,到由ptr所指的块中。
成功时返回所读的数据项数(不是字节数);遇到文件结束或出错时可能返回0。
void free(void *block);
释放先前分配的首地址为block的内存块。

int freemem(unsigned segx);
释放先前由allocmem分配的段地址为segx的内存块。

FILE *freopen(const char *filename,const char *mode,FILE *stream);
用filename所指定的文件代替打开的流stream所指定的文件。返回stream,出错时返回NULL。


double frexp(double x int *exponent);
将x分解成尾数合指数。
将给出的双精度数x分解成为在0.5和1之间尾数m和整形的指数n,使原来的x=m*(2的n次方),将整形指数n存入exponent所指的地址中,返回尾数m。


int fscan(FILE *stream,char *format,address,...);
fscanf扫描输入字段,从流stream读入,每读入一个字段,就依次按照由format所指的格式串中取一个从%开始的格式进行格式化之后存入对应的一个地址address中。
返回成功地扫描,转换和存贮输入字段的个数,遇文件结束返回EOF。

FILE *stream;
void main( void )
{
long l;
float fp;
char s[81];
char c;
stream = fopen( "fscanf.txt", "w+" );
if( stream == NULL )
printf( "The file fscanf.out was not opened
" );
else {fprintf( stream, "%s %ld %f%c", "a-string",65000, 3.14159, &#39;x&#39; );
/* Set pointer to beginning of file: */
fseek( stream, 0L, SEEK_SET );
/* Read data back from file: */
fscanf( stream, "%s", s );
fscanf( stream, "%ld", &l );
fscanf( stream, "%f",
fscanf( stream, "%c", &c );/* Output data read: */
printf( "%s
", s );
printf( "%ld
", l );
printf( "%f
", fp );
printf( "%c
", c );
fclose( stream ); }
}


int fseek(FILE *stream,long offset,int whence);
在流上重新定位文件结构的位置。fseek设置与流stream相联系的文件指针到新的位置,新位置与whence给定的文件位置的距离为offset字节。
whence的取值必须是0,1或2中的一个,分别代表在stdio.h中定义的三个符号常量:
0是SEEK_SET,是文件开始位置;
1是SEEK_CUR,是当前的指针位置;
2时SEEK_END,是文件末尾。
调用了fseek之后,在更新的文件位置上,下一个操作可以是输入;也可以是输出。成功地移动了指针时,fseek返回0;出错或失败时返回非0值。
例:
#include
FILE *stream;
void main( void )
{
long l;
float fp;
char s[81];
char c;
stream = fopen( "fscanf.txt", "w+" );
if( stream == NULL )
printf( "The file fscanf.out was not opened
" );
else {fprintf( stream, "%s %ld %f%c", "a-string",65000, 3.14159, &#39;x&#39; );
/* Set pointer to beginning of file: */
fseek( stream, 0L, SEEK_SET );
/* Read data back from file: */
fscanf( stream, "%s", s );
fscanf( stream, "%ld", &l );
fscanf( stream, "%f",
fscanf( stream, "%c", &c );/* Output data read: */
printf( "%s
", s );
printf( "%ld
", l );
printf( "%f
", fp );
printf( "%c
", c );
fclose( stream ); }
}


int fsetpos(FILE *stream,const fpos_t *pos);
fsetpos把与stream相联系的文件指针置于新的位置。这个新的位置是先前对此流调用fgetpos所得的值。
fsetpos清除stream所指文件的文件结束标志,并消除对该文件的所有ungetc操作。在调用fsetpos之后,文件的下一操作可以是输入或输出。
调用fsetpos成功时返回0;若失败,返回非0值。


int fstat(int handle,struct stat *statbuf);
把与handle相联系的打开文件或目录的信息存入到statbuf所指的定义在sys\stat.h中的stat结构中。成功时返回0;出错时返回-1。


long int ftell(FILE *stream);
返回流stream中当前文件指针位置。偏移量是文件开始算起的字节数。出错时返回-1L,是长整数的-1值。

void ftime(struct timeb *buf);
把当前时间存入到在sys\timeb.h中定义的timeb结构中。


size_t fwrite(const void *ptr,size_t size,size_t n,FILE *stream);
fwrite从指针ptr开始把n个数据项添加到给定输出流stream,每个数据项的长度为size个字节。
成功是返回确切的数据项数(不是字节数);出错时返回短(short)计数值。可能是0。
76#
 楼主| 发表于 2006-7-12 23:23 | 只看该作者
函数名: gcvt
功 能: 把浮点数转换成字符串
用 法: char *gcvt(double value, int ndigit, char *buf);
程序例:
#include
#include
int main(void)
{
char str[25];
double num;
int sig = 5; /* significant digits */
/* a regular number */
num = 9.876;
gcvt(num, sig, str);
printf("string = %s
", str);
/* a negative number */
num = -123.4567;
gcvt(num, sig, str);
printf("string = %s
", str);
/* scientific notation */
num = 0.678e5;
gcvt(num, sig, str);
printf("string = %s
", str);
return(0);
}
77#
 楼主| 发表于 2006-7-12 23:24 | 只看该作者
函数名: geninterrupt
功 能: 产生一个软中断
用 法: void geninterrupt(int intr_num);
程序例:
#include
#include
/* function prototype */
void writechar(char ch);
int main(void)
{
clrscr();
gotoxy(80,25);
writechar(&#39;*&#39;);
getch();
return 0;
}
/*
outputs a character at the current cursor
position using the video BIOS to avoid the
scrolling of the screen when writing to
location (80,25).
*/
void writechar(char ch)
{
struct text_info ti;
/* grab current text settings */
gettextinfo(&ti);
/* interrupt 0x10 sub-function 9 */
_AH = 9;
/* character to be output */
_AL = ch;
_BH = 0; /* video page */
_BL = ti.attribute; /* video attribute */
_CX = 1; /* repetition factor */
geninterrupt(0x10); /* output the char */
}
78#
 楼主| 发表于 2006-7-12 23:25 | 只看该作者
函数名: getarccoords
功 能: 取得最后一次调用arc的坐标
用 法: void far getarccoords(struct arccoordstype far *arccoords);
程序例:
#include
#include
#include
#include
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
struct arccoordstype arcinfo;
int midx, midy;
int stangle = 45, endangle = 270;
char sstr[80], estr[80];
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s
",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
/* draw arc and get coordinates */
setcolor(getmaxcolor());
arc(midx, midy, stangle, endangle, 100);
getarccoords(&arcinfo);
/* convert arc information into strings */
sprintf(sstr, "*- (%d, %d)",
arcinfo.xstart, arcinfo.ystart);
sprintf(estr, "*- (%d, %d)",
arcinfo.xend, arcinfo.yend);
/* output the arc information */
outtextxy(arcinfo.xstart,
arcinfo.ystart, sstr);
outtextxy(arcinfo.xend,
arcinfo.yend, estr);
/* clean up */
getch();
closegraph();
return 0;
}
79#
 楼主| 发表于 2006-7-12 23:25 | 只看该作者
函数名: getaspectratio
功 能: 返回当前图形模式的纵横比
用 法: void far getaspectratio(int far *xasp, int far *yasp);
程序例:
#include
#include
#include
#include
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int xasp, yasp, midx, midy;
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s
",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());
/* get current aspect ratio settings */
getaspectratio(&xasp, &yasp);
/* draw normal circle */
circle(midx, midy, 100);
getch();
/* draw wide circle */
cleardevice();
setaspectratio(xasp/2, yasp);
circle(midx, midy, 100);
getch();
/* draw narrow circle */
cleardevice();
setaspectratio(xasp, yasp/2);
circle(midx, midy, 100);
/* clean up */
getch();
closegraph();
return 0;
}
80#
 楼主| 发表于 2006-7-12 23:26 | 只看该作者
函数名: getbkcolor
功 能: 返回当前背景颜色
用 法: int far getbkcolor(void);
程序例:
#include
#include
#include
#include
#include
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int bkcolor, midx, midy;
char bkname[35];
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s
",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());
/* for centering text on the display */
settextjustify(CENTER_TEXT, CENTER_TEXT);
/* get the current background color */
bkcolor = getbkcolor();
/* convert color value into a string */
itoa(bkcolor, bkname, 10);
strcat(bkname,
" is the current background color.");
/* display a message */
outtextxy(midx, midy, bkname);
/* clean up */
getch();
closegraph();
return 0;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋| 碧海潮声大学生网  

Copyright © 2001-2013 Comsenz Inc.   All Rights Reserved.

Powered by Discuz! X3.2( 浙ICP备11026473号 )

快速回复 返回顶部 返回列表