?? caibook16.01
字號(hào):
return 0;
}void flush(FILE *stream)
{
int duphandle;
/* flush TC's internal buffer */
fflush(stream); /* make a duplicate file handle */
duphandle = dup(fileno(stream)); /* close the duplicate handle to flush the
DOS buffer */
close(duphandle);
}
函數(shù)名: dup2
功 能: 復(fù)制文件句柄
用 法: int dup2(int oldhandle, int newhandle);
程序例:#include <sys\stat.h>
#include <string.h>
#include <fcntl.h>
#include <io.h>int main(void)
{
#define STDOUT 1
int nul, oldstdout;
char msg[] = "This is a test"; /* create a file */
nul = open("DUMMY.FIL", O_CREAT | O_RDWR,
S_IREAD | S_IWRITE); /* create a duplicate handle for standard
output */
oldstdout = dup(STDOUT);
/*
redirect standard output to DUMMY.FIL
by duplicating the file handle onto the
file handle for standard output. */ dup2(nul, STDOUT);
/* close the handle for DUMMY.FIL */
close(nul); /* will be redirected into DUMMY.FIL */
write(STDOUT, msg, strlen(msg)); /* restore original standard output
handle */
dup2(oldstdout, STDOUT); /* close duplicate handle for STDOUT */
close(oldstdout);
return 0;
}字母E開(kāi)頭函數(shù)
函數(shù)名: ecvt
功 能: 把一個(gè)浮點(diǎn)數(shù)轉(zhuǎn)換為字符串
用 法: char ecvt( double value, int ndigit, int *decpt,
int *sign );
程序例:#include <stdlib.h>
#include <stdio.h>
#include <conio.h>int main(void)
{
char *string;
double value; int dec, sign;
int ndig = 10; clrscr();
value = 9.876;
string = ecvt(value, ndig, &dec, &sign);
printf("string = %s dec = %d \
sign = %d\n", string, dec, sign);
value = -123.45;
ndig= 15;
string = ecvt(value,ndig,&dec,&sign);
printf("string = %s dec = %d sign = %d\n",
string, dec, sign); value = 0.6789e5; /* scientific
notation */
ndig = 5;
string = ecvt(value,ndig,&dec,&sign);
printf("string = %s dec = %d\
sign = %d\n", string, dec, sign); return 0;
}
函數(shù)名: ellipse
功 能: 畫(huà)一橢圓
用 法: void far ellipse( int x, int y, int stangle,
int endangle, int xradius,
int yradius);
程序例:#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>int main(void)
{ /* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
int stangle = 0, endangle = 360;
int xradius = 100, yradius = 50; /* initialize graphics, 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 */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor()); /* draw ellipse */
ellipse(midx, midy, stangle, endangle,
xradius, yradius);
/* clean up */
getch();
closegraph();
return 0;
}
函數(shù)名: enable
功 能: 開(kāi)放硬件中斷
用 法: 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 <stdio.h>
#include <dos.h>
#include <conio.h>/* The clock tick interrupt */
#define INTR 0X1Cvoid 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\n",count);/* reset the old interrupt handler */
setvect(INTR, oldhandler); return 0;
}
函數(shù)名: eof
功 能: 檢測(cè)文件結(jié)束
用 法: int eof(int *handle);
程序例:#include <sys\stat.h>
#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>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;
}
函數(shù)名: exec...
功 能: 裝入并運(yùn)行其它程序的函數(shù)
用 法: 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 <process.h>
#include <stdio.h>
#include <errno.h>
void main(int argc, char *argv[])
{
int i; printf("Command line arguments:\n"); for (i=0; i<argc; i++)
printf("[%2d] : %s\n", i, argv[i]);
printf("About to exec child with arg1 arg2 ...\n");
execv("CHILD.EXE", argv);
perror("exec error");
exit(1);
}
函數(shù)名: exit
功 能: 終止程序
用 法: void exit(int status);
程序例:#include <stdlib.h>
#include <conio.h>
#include <stdio.h>int main(void)
{
int status; printf("Enter either 1 or 2\n"); status = getch();
/* Sets DOS errorlevel */
exit(status - '0');/* Note: this line is never reached */
return 0;
}
函數(shù)名: exp
功 能: 指數(shù)函數(shù)
用 法: double exp(double x);
程序例:#include <stdio.h>
#include <math.h>int main(void)
{
double result;
double x = 4.0; result = exp(x); printf("'e' raised to the power \
of %lf (e ^ %lf) = %lf\n",
x, x, result); return 0;
}字母F開(kāi)頭函數(shù)函數(shù)名: fabs
功 能: 返回浮點(diǎn)數(shù)的絕對(duì)值
用 法: double fabs(double x);
程序例:#include <stdio.h>
#include <math.h>
int main(void)
{
float number = -1234.0;
printf("number: %f absolute value: %f\n",
number, fabs(number));
return 0;
}
函數(shù)名: farcalloc
功 能: 從遠(yuǎn)堆棧中申請(qǐng)空間
用 法: void far *farcalloc( unsigned long units,
unsigned ling unitsz );
程序例:
#include <stdio.h>
#include <alloc.h>
#include <string.h>
#include <dos.h>int main(void)
{
char far *fptr;
char *str = "Hello"; /* allocate memory for the far pointer */
fptr = farcalloc(10, sizeof(char)); /* copy "Hello" into allocated memory */ /*
Note: movedata is used because you
might be in a small data model, in
which case a normal string copy routine
can not be used since it assumes the
pointer size is near. */
movedata(FP_SEG(str), FP_OFF(str),
FP_SEG(fptr), FP_OFF(fptr),
strlen(str)); /* display string (note the F modifier) */
printf("Far string is: %Fs\n", fptr); /* free the memory */
farfree(fptr); return 0;
}
函數(shù)名: farcoreleft
功 能: 返回遠(yuǎn)堆中未作用存儲(chǔ)區(qū)大小
用 法: long farcoreleft(void);
程序例:#include <stdio.h>
#include <alloc.h>int main(void)
{
printf("The difference between the\
highest allocated block in the\
far\n"); printf("heap and the top of the far heap\
is: %lu bytes\n", farcoreleft()); return 0;
}
函數(shù)名: farfree
功 能: 從遠(yuǎn)堆中釋放一塊
用 法: void farfree(void);
程序例:#include <stdio.h>
#include <alloc.h>
#include <string.h>
#include <dos.h>int main(void)
{
char far *fptr;
char *str = "Hello"; /* allocate memory for the far pointer */
fptr = farcalloc(10, sizeof(char)); /* copy "Hello" into allocated memory */
/*
Note: movedata is used because you might be in a
small data model, in which case a normal string
copy routine can't be used since it assumes the
pointer size is near.
*/
movedata(FP_SEG(str), FP_OFF(str),
FP_SEG(fptr), FP_OFF(fptr),
strlen(str)); /* display string (note the F modifier) */
printf("Far string is: %Fs\n", fptr); /* free the memory */
farfree(fptr); return 0;
}
函數(shù)名: farmalloc
功 能: 從遠(yuǎn)堆中分配存儲(chǔ)塊
用 法: void far *farmalloc(unsigned long size);
程序例:#include <stdio.h>
#include <alloc.h>
#include <string.h>
#include <dos.h>int main(void)
{
char far *fptr;
char *str = "Hello"; /* allocate memory for the far pointer */
fptr = farmalloc(10); /* copy "Hello" into allocated memory */
/*
Note: movedata is used because we might
be in a small data model, in which case
a normal string copy routine can not be
used since it assumes the pointer size
is near.
*/
movedata(FP_SEG(str), FP_OFF(str),
FP_SEG(fptr), FP_OFF(fptr),
strlen(str)); /* display string (note the F modifier) */
printf("Far string is: %Fs\n", fptr); /* free the memory */
farfree(fptr); return 0;
}
函數(shù)名: farrealloc
功 能: 調(diào)整遠(yuǎn)堆中的分配塊
用 法: void far *farrealloc( void far *block,
unsigned long newsize );
程序例:#include <stdio.h>
#include <alloc.h>int main(void)
{
char far *fptr; fptr = farmalloc(10); printf("First address: %Fp\n", fptr);
fptr = farrealloc(fptr,20);
printf("New address : %Fp\n", fptr);
farfree(fptr);
return 0;
}
函數(shù)名: fclose
功 能: 關(guān)閉一個(gè)流
用 法: int fclose(FILE *stream);
程序例:#include <string.h>
#include <stdio.h>int main(void)
{
FILE *fp;
char buf[11] = "0123456789"; /* create a file containing 10 bytes */ fp = fopen("DUMMY.FIL", "w");
fwrite(&buf, strlen(buf), 1, fp); /* close the file */
fclose(fp);
return 0;
}
函數(shù)名: fcloseall
功 能: 關(guān)閉打開(kāi)流
用 法: int fcloseall(void);
程序例:#include <stdio.h>int main(void)
{
int streams_closed; /* open two streams */
fopen("DUMMY.ONE", "w");
fopen("DUMMY.TWO", "w"); /* close the open streams */
streams_closed = fcloseall(); if (streams_closed == EOF)
/* issue an error message */
perror("Error");
else
/* print result of fcloseall() function */
printf("%d streams were closed.\n", streams_closed); return 0;
}
函數(shù)名: fcvt
功 能: 把一個(gè)浮點(diǎn)數(shù)轉(zhuǎn)換為字符串
用 法: char *fcvt( double value, int ndigit, int *decpt,
int *sign );
程序例:#include <stdlib.h>
#include <stdio.h>
#include <conio.h>int main(void)
{
char *string;
double value; int dec, sign;
int ndig = 10; clrscr();
value = 9.876;
string = ecvt(value, ndig, &dec, &sign);
printf("string = %s dec = %d \
sign = %d\n", string, dec, sign);
value = -123.45;
ndig= 15;
string = ecvt(value,ndig,&dec,&sign);
printf("string = %s dec = %d sign = %d\n",
string, dec, sign); value = 0.6789e5; /* scientific
notation */
ndig = 5;
string = ecvt(value,ndig,&dec,&sign);
printf("string = %s dec = %d\
sign = %d\n", string, dec, sign);
return 0;
}
函數(shù)名: fdopen
功 能: 把流與一個(gè)文件句柄相接
用 法: FILE *fdopen(int handle, char *type);
程序例:#include <sys\stat.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>int main(void)
{
int handle;
FILE *stream; /* open a file */
handle = open("DUMMY.FIL", O_CREAT,
S_IREAD | S_IWRITE);
/* now turn the handle into a stream */
stream = fdopen(handle, "w"); if (stream == NULL)
printf("fdopen failed\n");
else
{
fprintf(stream, "Hello world\n");
fclose(stream);
} return 0;
}
函數(shù)名: feof
功 能: 檢測(cè)流上的文件結(jié)束符
用 法: int feof(FILE *stream);
程序例:#include <stdio.h>int main(void)
{
FILE *stream; /* open a file for reading */
stream = fopen("DUMMY.FIL", "r"); /* read a character from the file */
fgetc(stream); /* check for EOF */
if (feof(stream))
printf("We have reached end-of-file\n"); /* close the file */
fclose(stream);
return 0;
}
函數(shù)名: ferror
功 能: 檢測(cè)流上的錯(cuò)誤
用 法: int ferror(FILE *stream);
程序例:#include <stdio.h>int main(void)
{
FILE *stream; /* open a file for writing */
stream = fopen("DUMMY.FIL", "w");
/* force an error condition by attempting to read */
(void) getc(stream); if (ferror(stream)) /*test for an error on the stream*/
{
/* display an error message */
printf("Error reading from DUMMY.FIL\n"); /* reset the error and EOF indicators */
clearerr(stream);
} fclose(stream);
return 0;
}
函數(shù)名: fflush
功 能: 清除一個(gè)流
用 法: int fflush(FILE *stream);
程序例:#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <io.h>void flush(FILE *stream);int main(void)
{ FILE *stream;
char msg[] = "This is a test"; /* create a file */
stream = fopen("DUMMY.FIL", "w"); /* write some data to the file */
fwrite(msg, strlen(msg), 1, stream); clrscr();
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -