打印本文 打印本文  关闭窗口 关闭窗口  
C语言函数大全(s开头)(1)
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 13:59:41  文章录入:杜斌  责任编辑:杜斌

函数名: sbrk 
功 能: 改变数据段空间位置 
用 法: char *sbrk(int incr); 
程序例: 
#include 
#include 
int main(void) 

printf("Changing allocation with sbrk()\n"); 
printf("Before sbrk() call: %lu bytes free\n", 
(unsigned long) coreleft()); 
sbrk(1000); 
printf(" After sbrk() call: %lu bytes free\n", 
(unsigned long) coreleft()); 
return 0; 



函数名: scanf 
功 能: 执行格式化输入 
用 法: int scanf(char *format[,argument,...]); 
程序例: 
#include 
#include 
int main(void) 

char label[20]; 
char name[20]; 
int entries = 0; 
int loop, age; 
double salary; 
struct Entry_struct 

char name[20]; 
int age; 
float salary; 
} entry[20]; 
/* Input a label as a string of characters restricting to 20 characters */ 
printf("\n\nPlease enter a label for the chart: "); 
scanf(" s", label); 
fflush(stdin); /* flush the input stream in case of bad input */ 
/* Input number of entries as an integer */ 
printf("How many entries will there be? (less than 20) "); 
scanf("%d", &entries); 
fflush(stdin); /* flush the input stream in case of bad input */ 
/* input a name restricting input to only letters upper or lower case */ 
for (loop=0;loop 

printf("Entry %d\n", loop); 
printf(" Name : "); 
scanf("%[A-Za-z]", entry[loop].name); 
fflush(stdin); /* flush the input stream in case of bad input */ 
/* input an age as an integer */ 
printf(" Age : "); 
scanf("%d", &entry[loop].age); 
fflush(stdin); /* flush the input stream in case of bad input */ 
/* input a salary as a float */ 
printf(" Salary : "); 
scanf("%f", &entry[loop].salary); 
fflush(stdin); /* flush the input stream in case of bad input */ 

/* Input a name, age and salary as a string, integer, and double */ 
printf("\nPlease enter your name, age and salary\n"); 
scanf(" s %d %lf", name, &age, &salary); 

/* Print out the data that was input */ 
printf("\n\nTable %s\n",label); 
printf("Compiled by %s age %d $.2lf\n", name, age, salary); 
printf("-----------------------------------------------------\n"); 
for (loop=0;loop 
printf("M | %-20s | ] | .2lf\n", 
loop + 1, 
entry[loop].name, 
entry[loop].age, 
entry[loop].salary); 
printf("-----------------------------------------------------\n"); 
return 0; 



函数名: searchpath 
功 能: 搜索DOS路径 
用 法: char *searchpath(char *filename); 
程序例: 
#include 
#include 
int main(void) 

char *p; 
/* Looks for TLINK and returns a pointer 


to the path */ 
p = searchpath("TLINK.EXE"); 
printf("Search for TLINK.EXE : %s\n", p); 
/* Looks for non-existent file */ 
p = searchpath("NOTEXIST.FIL"); 
printf("Search for NOTEXIST.FIL : %s\n", p); 
return 0; 



函数名: sector 
功 能: 画并填充椭圆扇区 
用 法: void far sector(int x, int y, int stangle, int endangle); 
程序例: 
#include 
#include 
#include 
#include 
int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
int midx, midy, i; 
int stangle = 45, endangle = 135; 
int xrad = 100, yrad = 50; 
/* 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 */ 

midx = getmaxx() / 2; 
midy = getmaxy() / 2; 
/* loop through the fill patterns */ 
for (i=EMPTY_FILL; i 

/* set the fill style */ 
setfillstyle(i, getmaxcolor()); 
/* draw the sector slice */ 
sector(midx, midy, stangle, endangle, xrad, yrad); 
getch(); 

/* clean up */ 
closegraph(); 
return 0; 


函数名: segread 
功 能: 读段寄存器值 
用 法: void segread(struct SREGS *segtbl); 
程序例: 
#include 
#include 
int main(void) 

struct SREGS segs; 
segread(&segs); 
printf("Current segment register settings\n\n"); 
printf("CS: %X DS: %X\n", segs.cs, segs.ds); 
printf("ES: %X SS: %X\n", segs.es, segs.ss); 
return 0; 



函数名: setactivepage 
功 能: 设置图形输出活动页 
用 法: void far setactivepage(int pagenum); 
程序例: 
#include 
#include 
#include 
#include 
int main(void) 

/* select a driver and mode that supports */ 
/* multiple pages. */ 
int gdriver = EGA, gmode = EGAHI, errorcode; 
int x, y, ht; 
/* 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 */ 

x = getmaxx() / 2; 
y = getmaxy() / 2; 
ht = textheight("W"); 
/* select the off screen page for drawing */ 
setactivepage(1); 


/* draw a line on page #1 */ 
line(0, 0, getmaxx(), getmaxy()); 
/* output a message on page #1 */ 
settextjustify(CENTER_TEXT, CENTER_TEXT); 
outtextxy(x, y, "This is page #1:"); 
outtextxy(x, y+ht, "Press any key to halt:"); 
/* select drawing to page #0 */ 
setactivepage(0); 
/* output a message on page #0 */ 
outtextxy(x, y, "This is page #0."); 
outtextxy(x, y+ht, "Press any key to view page #1:"); 
getch(); 
/* select page #1 as the visible page */ 
setvisualpage(1); 
/* clean up */ 
getch(); 
closegraph(); 
return 0; 



函数名: setallpallette 
功 能: 按指定方式改变所有的调色板颜色 
用 法: void far setallpallette(struct palette, far *pallette); 
程序例: 
#include 
#include 
#include 
#include 
int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
struct palettetype pal; 
int color, maxcolor, ht; 
int y = 10; 
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 */ 

maxcolor = getmaxcolor(); 
ht = 2 * textheight("W"); 
/* grab a copy of the palette */ 
getpalette(&pal); 
/* display the default palette colors */ 
for (color=1; color<=maxcolor; color++) 

setcolor(color); 
sprintf(msg, "Color: %d", color); 
outtextxy(1, y, msg); 
y += ht; 

/* wait for a key */ 
getch(); 
/* black out the colors one by one */ 
for (color=1; color<=maxcolor; color++) 

setpalette(color, BLACK); 
getch(); 

/* restore the palette colors */ 
setallpalette(&pal); 
/* clean up */ 
getch(); 
closegraph(); 
return 0; 



函数名: setaspectratio 
功 能: 设置图形纵横比 
用 法: void far setaspectratio(int xasp, int 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(); 
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()); 
/* get current aspect ratio settings */ 
getaspectratio(&xasp, &yasp); 
/* draw normal circle */ 
circle(midx, midy, 100); 
getch(); 
/* claer the screen */ 
cleardevice(); 
/* adjust the aspect for a wide circle */ 
setaspectratio(xasp/2, yasp); 
circle(midx, midy, 100); 
getch(); 
/* adjust the aspect for a narrow circle */ 
cleardevice(); 
setaspectratio(xasp, yasp/2); 
circle(midx, midy, 100); 
/* clean up */ 
getch(); 
closegraph(); 
return 0; 



函数名: setbkcolor 
功 能: 用调色板设置当前背景颜色 
用 法: void far setbkcolor(int color); 
程序例: 
#include 
#include 
#include 
#include 
int main(void) 

/* select a driver and mode that supports */ 
/* multiple background colors. */ 
int gdriver = EGA, gmode = EGAHI, errorcode; 
int bkcol, maxcolor, x, y; 
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 */ 

/* maximum color index supported */ 
maxcolor = getmaxcolor(); 
/* for centering text messages */ 
settextjustify(CENTER_TEXT, CENTER_TEXT); 
x = getmaxx() / 2; 
y = getmaxy() / 2; 
/* loop through the available colors */ 
for (bkcol=0; bkcol<=maxcolor; bkcol++) 

/* clear the screen */ 
cleardevice(); 
/* select a new background color */ 
setbkcolor(bkcol); 
/* output a messsage */ 
if (bkcol == WHITE) 
setcolor(EGA_BLUE); 
sprintf(msg, "Background color: %d", bkcol); 
outtextxy(x, y, msg); 
getch(); 

/* clean up */ 
closegraph(); 
return 0; 



函数名: setblock 
功 能: 修改先前已分配的DOS存储段大小 
用 法: int setblock(int seg, int newsize); 
程序例: 
#include 
#include 
#include 
#include 
int main(void) 

unsigned int size, segp; 
int stat; 
size = 64; /* (64 x 16) = 1024 bytes */ 
stat = allocmem(size, &segp); 
if (stat == -1) 
printf("Allocated memory at segment: %X\n", segp); 
else 

printf("Failed: maximum number of paragraphs available is %d\n", 
stat); 
exit(1); 

stat = setblock(segp, size * 2); 
if (stat == -1) 


printf("Expanded memory block at segment: %X\n", segp); 
else 
printf("Failed: maximum number of paragraphs available is %d\n", 
stat); 
freemem(segp); 
return 0; 



函数名: setbuf 
功 能: 把缓冲区与流相联 
用 法: void setbuf(FILE *steam, char *buf); 
程序例: 
#include 
/* BUFSIZ is defined in stdio.h */ 
char outbuf[BUFSIZ]; 
int main(void) 

/* attach a buffer to the standard output stream */ 
setbuf(stdout, outbuf); 
/* put some characters into the buffer */ 
puts("This is a test of buffered output.\n\n"); 
puts("This output will go into outbuf\n"); 
puts("and won’t appear until the buffer\n"); 
puts("fills up or we flush the stream.\n"); 
/* flush the output buffer */ 
fflush(stdout); 
return 0; 



函数名: setcbrk 
功 能: 设置Control-break 
用 法: int setcbrk(int value); 
程序例: 
#include 
#include 
#include 
int main(void) 

int break_flag; 
printf("Enter 0 to turn control break off\n"); 
printf("Enter 1 to turn control break on\n"); 
break_flag = getch() - 0; 
setcbrk(break_flag); 
if (getcbrk()) 
printf("Cntrl-brk flag is on\n"); 
else 
printf("Cntrl-brk flag is off\n"); 
return 0; 




函数名: setcolor 
功 能: 设置当前画线颜色 
用 法: void far setcolor(int color); 
程序例: 
#include 
#include 
#include 
#include 
int main(void) 

/* select a driver and mode that supports */ 
/* multiple drawing colors. */ 
int gdriver = EGA, gmode = EGAHI, errorcode; 
int color, maxcolor, x, y; 
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 */ 

/* maximum color index supported */ 
maxcolor = getmaxcolor(); 
/* for centering text messages */ 
settextjustify(CENTER_TEXT, CENTER_TEXT); 
x = getmaxx() / 2; 
y = getmaxy() / 2; 
/* loop through the available colors */ 
for (color=1; color<=maxcolor; color++) 

/* clear the screen */ 
cleardevice(); 
/* select a new background color */ 
setcolor(color); 
/* output a messsage */ 
sprintf(msg, "Color: %d", color); 
outtextxy(x, y, msg); 
getch(); 

/* clean up */ 
closegraph(); 
return 0; 



函数名: setdate 
功 能: 设置DOS日期 
用 法: void setdate(struct date *dateblk); 


程序例: 
#include 
#include 
#include 
int main(void) 

struct date reset; 
struct date save_date; 
getdate(&save_date); 
printf("Original date:\n"); 
system("date"); 
reset.da_year = 2001; 
reset.da_day = 1; 
reset.da_mon = 1; 
setdate(&reset); 
printf("Date after setting:\n"); 
system("date"); 
setdate(&save_date); 
printf("Back to original date:\n"); 
system("date"); 
return 0; 



函数名: setdisk 
功 能: 设置当前磁盘驱动器 
用 法: int setdisk(int drive); 
程序例: 
#include 
#include 
int main(void) 

int save, disk, disks; 
/* save original drive */ 
save = getdisk(); 
/* print number of logic drives */ 
disks = setdisk(save); 
printf("%d logical drives on the system\n\n", disks); 
/* print the drive letters available */ 
printf("Available drives:\n"); 
for (disk = 0;disk < 26;++disk) 

setdisk(disk); 
if (disk == getdisk()) 
printf("%c: drive is available\n", disk + ’a’); 

setdisk(save); 
return 0; 



函数名: setdta 
功 能: 设置磁盘传输区地址 
用 法: void setdta(char far *dta); 
程序例: 
#include 
#include 
#include 
#include 
int main(void) 

char line[80], far *save_dta; 
char buffer[256] = "SETDTA test!"; 
struct fcb blk; 
int result; 
/* get new file name from user */ 
printf("Enter a file name to create:"); 
gets(line); 
/* parse the new file name to the dta */ 
parsfnm(line, &blk, 1); 
printf("%d %s\n", blk.fcb_drive, blk.fcb_name); 
/* request DOS services to create file */ 
if (bdosptr(0x16, &blk, 0) == -1) 

perror("Error creating file"); 
exit(1); 

/* save old dta and set new dta */ 
save_dta = getdta(); 
setdta(buffer); 
/* write new records */ 
blk.fcb_recsize = 256; 
blk.fcb_random = 0L; 
result = randbwr(&blk, 1); 
printf("result = %d\n", result); 
if (!result) 
printf("Write OK\n"); 
else 

perror("Disk error"); 
exit(1); 

/* request DOS services to close the file */ 
if (bdosptr(0x10, &blk, 0) == -1) 

perror("Error closing file"); 
exit(1); 

/* reset the old dta */ 
setdta(save_dta); 
return 0; 



函数名: setfillpattern 
功 能: 选择用户定义的填充模式 
用 法: void far setfillpattern(char far *upattern, int color); 
程序例: 
#include 
#include 
#include 
#include 
int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
int maxx, maxy; 
/* a user defined fill pattern */ 
char pattern[8] = {0x00, 0x70, 0x20, 0x27, 0x24, 0x24, 0x07, 0x00}; 


/* 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 */ 

maxx = getmaxx(); 
maxy = getmaxy(); 
setcolor(getmaxcolor()); 
/* select a user defined fill pattern */ 
setfillpattern(pattern, getmaxcolor()); 
/* fill the screen with the pattern */ 
bar(0, 0, maxx, maxy); 
/* clean up */ 
getch(); 
closegraph(); 
return 0; 



函数名: setfillstyle 
功 能: 设置填充模式和颜色 
用 法: void far setfillstyle(int pattern, int color); 
程序例: 
#include 
#include 
#include 
#include 
#include 
/* the names of the fill styles supported */ 
char *fname[] = { "EMPTY_FILL", 
"SOLID_FILL", 
"LINE_FILL", 
"LTSLASH_FILL", 
"SLASH_FILL", 
"BKSLASH_FILL", 
"LTBKSLASH_FILL", 
"HATCH_FILL", 
"XHATCH_FILL", 
"INTERLEAVE_FILL", 
"WIDE_DOT_FILL", 
"CLOSE_DOT_FILL", 
"USER_FILL" 
}; 
int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
int style, midx, midy; 
char stylestr[40]; 
/* 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 */ 

midx = getmaxx() / 2; 
midy = getmaxy() / 2; 
for (style = EMPTY_FILL; style < USER_FILL; style++) 

/* select the fill style */ 
setfillstyle(style, getmaxcolor()); 
/* convert style into a string */ 
strcpy(stylestr, fname[style]); 
/* fill a bar */ 
bar3d(0, 0, midx-10, midy, 0, 0); 
/* output a message */ 
outtextxy(midx, midy, stylestr); 
/* wait for a key */ 
getch(); 
cleardevice(); 

/* clean up */ 
getch(); 
closegraph(); 
return 0; 



函数名: setftime 
功 能: 设置文件日期和时间 
用 法: int setftime(int handle, struct ftime *ftimep); 
程序例: 
#include 
#include 
#include 
#include 
int main(void) 

struct ftime filet; 
FILE *fp; 
if ((fp = fopen("TEST.$$$", "w")) == NULL) 

perror("Error:"); 
exit(1); 

fprintf(fp, "testing...\n"); 
/* load ftime structure with new time and date */ 
filet.ft_tsec = 1; 


filet.ft_min = 1; 
filet.ft_hour = 1; 
filet.ft_day = 1; 
filet.ft_month = 1; 
filet.ft_year = 21; 
/* show current directory for time and date */ 
system("dir TEST.$$$"); 
/* change the time and date stamp*/ 
setftime(fileno(fp), &filet); 
/* close and remove the temporary file */ 
fclose(fp); 
system("dir TEST.$$$"); 
unlink("TEST.$$$"); 
return 0; 



函数名: setgraphbufsize 
功 能: 改变内部图形缓冲区的大小 
用 法: unsigned far setgraphbufsize(unsigned bufsize); 
程序例: 
#include 
#include 
#include 
#include 
#define BUFSIZE 1000 /* internal graphics buffer size */ 
int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
int x, y, oldsize; 
char msg[80]; 
/* set the size of the internal graphics buffer */ 
/* before making a call to initgraph. */ 
oldsize = setgraphbufsize(BUFSIZE); 
/* 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 */ 

x = getmaxx() / 2; 
y = getmaxy() / 2; 
/* output some messages */ 
sprintf(msg, "Graphics buffer size: %d", BUFSIZE); 
settextjustify(CENTER_TEXT, CENTER_TEXT); 
outtextxy(x, y, msg); 
sprintf(msg, "Old graphics buffer size: %d", oldsize); 
outtextxy(x, y+textheight("W"), msg); 
/* clean up */ 
getch(); 
closegraph(); 
return 0; 




函数名: setgraphmode 
功 能: 将系统设置成图形模式且清屏 
用 法: void far setgraphmode(int mode); 
程序例: 

#include 
#include 
#include #include 
int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
int x, y; 
/* 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 */ 

x = getmaxx() / 2; 
y = getmaxy() / 2; 
/* output a message */ 
settextjustify(CENTER_TEXT, CENTER_TEXT); 
outtextxy(x, y, "Press any key to exit graphics:"); 
getch(); 
/* restore system to text mode */ 
restorecrtmode(); 
printf("We’re now in text mode.\n"); 


printf("Press any key to return to graphics mode:"); 
getch(); 
/* return to graphics mode */ 
setgraphmode(getgraphmode()); 
/* output a message */ 
settextjustify(CENTER_TEXT, CENTER_TEXT); 
outtextxy(x, y, "We’re back in graphics mode."); 
outtextxy(x, y+textheight("W"), "Press any key to halt:"); 
/* clean up */ 
getch(); 
closegraph(); 
return 0; 




函数名: setjmp 
功 能: 非局部转移 
用 法: int setjmp(jmp_buf env); 
程序例: 
#include 
#include 
#include 
void subroutine(void); 
jmp_buf jumper; 
int main(void) 

int value; 
value = setjmp(jumper); 
if (value != 0) 

printf("Longjmp with value %d\n", value); 
exit(value); 

printf("About to call subroutine ... \n"); 
subroutine(); 
return 0; 

void subroutine(void) 

longjmp(jumper,1); 



函数名: setlinestyle 
功 能: 设置当前画线宽度和类型 
用 法: void far setlinestyle(int linestype, unsigned upattern); 
程序例: 
#include 
#include 
#include 
#include 
#include 
/* the names of the line styles supported */ 
char *lname[] = { 
"SOLID_LINE", 
"DOTTED_LINE", 
"CENTER_LINE", 
"DASHED_LINE", 
"USERBIT_LINE" 
}; 
int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
int style, midx, midy, userpat; 
char stylestr[40]; 
/* 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 */ 

midx = getmaxx() / 2; 
midy = getmaxy() / 2; 
/* a user defined line pattern */ 
/* binary: "0000000000000001" */ 
userpat = 1; 
for (style=SOLID_LINE; style<=USERBIT_LINE; style++) 

/* select the line style */ 
setlinestyle(style, userpat, 1); 
/* convert style into a string */ 
strcpy(stylestr, lname[style]); 
/* draw a line */ 
line(0, 0, midx-10, midy); 
/* draw a rectangle */ 
rectangle(0, 0, getmaxx(), getmaxy()); 
/* output a message */ 
outtextxy(midx, midy, stylestr); 
/* wait for a key */ 
getch(); 
cleardevice(); 

/* clean up */ 
closegraph(); 
return 0; 




函数名: setmem 
功 能: 存值到存储区 
用 法: void setmem(void *addr, int len, char value); 
程序例: 
#include 
#include 
#include 
int main(void) 

char *dest; 
dest = calloc(21, sizeof(char)); 
setmem(dest, 20, ’c’); 


printf("%s\n", dest); 
return 0; 




函数名: setmode 
功 能: 设置打开文件方式 
用 法: int setmode(int handle, unsigned mode); 
程序例: 
#include 
#include 
#include 
int main(void) 

int result; 
result = setmode(fileno(stdprn), O_TEXT); 
if (result == -1) 
perror("Mode not available\n"); 
else 
printf("Mode successfully switched\n"); 
return 0; 




函数名: setpalette 
功 能: 改变调色板的颜色 
用 法: void far setpalette(int index, int actural_color); 
程序例: 
#include 
#include 
#include 
#include 
int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
int color, maxcolor, ht; 
int y = 10; 
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 */ 

maxcolor = getmaxcolor(); 
ht = 2 * textheight("W"); 
/* display the default colors */ 
for (color=1; color<=maxcolor; color++) 

setcolor(color); 
sprintf(msg, "Color: %d", color); 
outtextxy(1, y, msg); 
y += ht; 

/* wait for a key */ 
getch(); 
/* black out the colors one by one */ 
for (color=1; color<=maxcolor; color++) 

setpalette(color, BLACK); 
getch(); 

/* clean up */ 
closegraph(); 
return 0; 



函数名: setrgbpalette 
功 能: 定义IBM8514图形卡的颜色 
用 法: void far setrgbpalette(int colornum, int red, int green, int blue); 
程序例: 
#include 
#include 
#include 
#include 
int main(void) 

/* select a driver and mode that supports the use */ 
/* of the setrgbpalette function. */ 
int gdriver = VGA, gmode = VGAHI, errorcode; 
struct palettetype pal; 
int i, ht, y, xmax; 
/* 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 */ 

/* grab a copy of the palette */ 
getpalette(&pal); 
/* create gray scale */ 
for (i=0; i 
setrgbpalette(pal.colors[i], i*4, i*4, i*4); 
/* display the gray scale */ 


ht = getmaxy() / 16; 
xmax = getmaxx(); 
y = 0; 
for (i=0; i 

setfillstyle(SOLID_FILL, i); 
bar(0, y, xmax, y+ht); 
y += ht; 

/* clean up */ 
getch(); 
closegraph(); 
return 0; 




函数名: settextjustify 
功 能: 为图形函数设置文本的对齐方式 
用 法: void far settextjustify(int horiz, int vert); 
程序例: 
#include 
#include 
#include 
#include 
/* function prototype */ 
void xat(int x, int y); 
/* horizontal text justification settings */ 
char *hjust[] = { "LEFT_TEXT", 
"CENTER_TEXT", 
"RIGHT_TEXT" 
}; 
/* vertical text justification settings */ 
char *vjust[] = { "LEFT_TEXT", 
"CENTER_TEXT", 
"RIGHT_TEXT" 
}; 
int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
int midx, midy, hj, vj; 
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 */ 

midx = getmaxx() / 2; 
midy = getmaxy() / 2; 
/* loop through text justifications */ 
for (hj=LEFT_TEXT; hj<=RIGHT_TEXT; hj++) 
for (vj=LEFT_TEXT; vj<=RIGHT_TEXT; vj++) 

cleardevice(); 
/* set the text justification */ 
settextjustify(hj, vj); 
/* create a message string */ 
sprintf(msg, "%s %s", hjust[hj], vjust[vj]); 
/* create cross hairs on the screen */ 
xat(midx, midy); 
/* output the message */ 
outtextxy(midx, midy, msg); 
getch(); 

/* clean up */ 
closegraph(); 
return 0; 

/* draw an "x" at (x, y) */ 
void xat(int x, int y) 

line(x-4, y, x+4, y); 
line(x, y-4, x, y+4); 



函数名: settextstyle 
功 能: 为图形输出设置当前的文本属性 
用 法: void far settextstyle (int font, int direction, char size); 
程序例: 
#include 
#include 
#include 
#include 
/* the names of the text styles supported */ 
char *fname[] = { "DEFAULT font", 
"TRIPLEX font", 
"SMALL font", 
"SANS SERIF font", 
"GOTHIC font" 
}; 
int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
int style, midx, midy; 
int size = 1; 
/* 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 */ 

midx = getmaxx() / 2; 
midy = getmaxy() / 2; 
settextjustify(CENTER_TEXT, CENTER_TEXT); 
/* loop through the available text styles */ 
for (style=DEFAULT_FONT; style<=GOTHIC_FONT; style++) 

cleardevice(); 
if (style == TRIPLEX_FONT) 
size = 4; 
/* select the text style */ 
settextstyle(style, HORIZ_DIR, size); 
/* output a message */ 
outtextxy(midx, midy, fname[style]); 
getch(); 

/* clean up */ 
closegraph(); 
return 0; 



函数名: settextstyle 
功 能: 为图形输出设置当前的文本属性 
用 法: void far settextstyle (int font, int direction, char size); 
程序例: 
#include 
#include 
#include 
#include 
/* the names of the text styles supported */ 
char *fname[] = { "DEFAULT font", 
"TRIPLEX font", 
"SMALL font", 
"SANS SERIF font", 
"GOTHIC font" 
}; 
int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
int style, midx, midy; 
int size = 1; 
/* 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 */ 

midx = getmaxx() / 2; 
midy = getmaxy() / 2; 
settextjustify(CENTER_TEXT, CENTER_TEXT); 
/* loop through the available text styles */ 
for (style=DEFAULT_FONT; style<=GOTHIC_FONT; style++) 

cleardevice(); 
if (style == TRIPLEX_FONT) 
size = 4; 
/* select the text style */ 
settextstyle(style, HORIZ_DIR, size); 
/* output a message */ 
outtextxy(midx, midy, fname[style]); 
getch(); 

/* clean up */ 
closegraph(); 
return 0; 



函数名: settime 
功 能: 设置系统时间 
用 法: void settime(struct time *timep); 
程序例: 
#include 
#include 
int main(void) 

struct time t; 
gettime(&t); 
printf("The current minute is: %d\n", t.ti_min); 
printf("The current hour is: %d\n", t.ti_hour); 
printf("The current hundredth of a second is: %d\n", t.ti_hund); 
printf("The current second is: %d\n", t.ti_sec); 
/* Add one to the minutes struct element and then call settime */ 
t.ti_min++; 
settime(&t); 


return 0; 



函数名: setusercharsize 
功 能: 为矢量字体改变字符宽度和高度 
用 法: void far setusercharsize(int multx, int dirx, int multy, int diry); 
程序例: 
#include 
#include 
#include 
#include 
int main(void) 

/* request autodetection */ 
int gdriver = DETECT, gmode, errorcode; 
/* 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 */ 

/* select a text style */ 
settextstyle(TRIPLEX_FONT, HORIZ_DIR, 4); 
/* move to the text starting position */ 
moveto(0, getmaxy() / 2); 
/* output some normal text */ 
outtext("Norm "); 
/* make the text 1/3 the normal width */ 
setusercharsize(1, 3, 1, 1); 
outtext("Short "); 
/* make the text 3 times normal width */ 
setusercharsize(3, 1, 1, 1); 
outtext("Wide"); 
/* clean up */ 
getch(); 
closegraph(); 
return 0; 


函数名: setvbuf 
功 能: 把缓冲区与流相关 
用 法: int setvbuf(FILE *stream, char *buf, int type, unsigned size); 
程序例: 
#include 
int main(void) 

FILE *input, *output; 
char bufr[512]; 
input = fopen("file.in", "r+b"); 
output = fopen("file.out", "w"); 
/* set up input stream for minimal disk access, 
using our own character buffer */ 
if (setvbuf(input, bufr, _IOFBF, 512) != 0) 
printf("failed to set up buffer for input file\n"); 
else 
printf("buffer set up for input file\n"); 
/* set up output stream for line buffering using space that 
will be obtained through an indirect call to malloc */ 
if (setvbuf(output, NULL, _IOLBF, 132) != 0) 
printf("failed to set up buffer for output file\n"); 
else 
printf("buffer set up for output file\n"); 
/* perform file I/O here */ 
/* close files */ 
fclose(input); 
fclose(output); 
return 0; 




函数名: setvect 
功 能: 设置中断矢量入口 
用 法: void setvect(int intr_num, void interrupt(*isr)()); 
程序例: 
/***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 
#define INTR 0X1C /* The clock tick interrupt */ 
void interrupt ( *oldhandler)(void); 


int count=0; 
void interrupt handler(void) 

/* increase the global counter */ 
count++; 
/* 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; 



函数名: setverify 
功 能: 设置验证状态 
用 法: void setverify(int value); 
程序例: 
#include 
#include 
#include 
int main(void) 

int verify_flag; 
printf("Enter 0 to set verify flag off\n"); 
printf("Enter 1 to set verify flag on\n"); 
verify_flag = getch() - 0; 
setverify(verify_flag); 
if (getverify()) 
printf("DOS verify flag is on\n"); 
else 
printf("DOS verify flag is off\n"); 
return 0; 



函数名: setviewport 
功 能: 为图形输出设置当前视口 
用 法: void far setviewport(int left, int top, int right, 
int bottom, int clipflag); 
程序例: 
#include 
#include 
#include 
#include 
#define CLIP_ON 1 /* activates clipping in viewport */ 
int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
/* 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 */ 

setcolor(getmaxcolor()); 
/* message in default full-screen viewport */ 
outtextxy(0, 0, "* <-- (0, 0) in default viewport"); 
/* create a smaller viewport */ 
setviewport(50, 50, getmaxx()-50, getmaxy()-50, CLIP_ON); 
/* display some text */ 
outtextxy(0, 0, "* <-- (0, 0) in smaller viewport"); 
/* clean up */ 
getch(); 
closegraph(); 
return 0; 
}
打印本文 打印本文  关闭窗口 关闭窗口