c语言函数大全(P开头)

本文详细介绍了C语言中一系列函数,包括文件名解析、键盘状态检测、图形绘制、错误处理、数值运算和字符串操作等,帮助读者理解和使用这些基本功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c语言函数大全(P开头)

There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence.
The blog content is all parallel goods. Those who are worried about being cheated should leave quickly.

函数名: parsfnm
功 能: 分析文件名
用 法: char *parsfnm (char *cmdline, struct fcb *fcbptr, int option);
程序例:

#include
#include
#include
#include

int main(void)
{
char line[80];
struct fcb blk;

/* get file name */
printf("Enter drive and file name (no path - ie. a:file.dat)\n");
gets(line);

/* put file name in fcb */
if (parsfnm(line, &blk, 1) == NULL)
printf("Error in parsfm call\n");
else
printf("Drive #%d Name: %11s\n", blk.fcb_drive, blk.fcb_name);

return 0;
}

函数名: peek
功 能: 检查存储单元
用 法: int peek(int segment, unsigned offset);
程序例:

#include
#include
#include

int main(void)
{
int value = 0;

printf("The current status of your keyboard is:\n");
value = peek(0x0040, 0x0017);
if (value & 1)
printf("Right shift on\n");
else
printf("Right shift off\n");

if (value & 2)
printf("Left shift on\n");
else
printf("Left shift off\n");

if (value & 4)
printf("Control key on\n");
else
printf("Control key off\n");

if (value & 8)
printf("Alt key on\n");
else
printf("Alt key off\n");

if (value & 16)
printf("Scroll lock on\n");
else
printf("Scroll lock off\n");

if (value & 32)
printf("Num lock on\n");
else
printf("Num lock off\n");

if (value & 64)
printf("Caps lock on\n");
else
printf("Caps lock off\n");

return 0;
}

函数名: peekb
功 能: 检查存储单元
用 法: char peekb (int segment, unsigned offset);
程序例:

#include
#include
#include

int main(void)
{
int value = 0;

printf("The current status of your keyboard is:\n");
value = peekb(0x0040, 0x0017);
if (value & 1)
printf("Right shift on\n");
else
printf("Right shift off\n");

if (value & 2)
printf("Left shift on\n");
else
printf("Left shift off\n");

if (value & 4)
printf("Control key on\n");
else
printf("Control key off\n");

if (value & 8)
printf("Alt key on\n");
else
printf("Alt key off\n");

if (value & 16)
printf("Scroll lock on\n");
else
printf("Scroll lock off\n");

if (value & 32)
printf("Num lock on\n");
else
printf("Num lock off\n");

if (value & 64)
printf("Caps lock on\n");
else
printf("Caps lock off\n");

return 0;
}

函数名: perror
功 能: 系统错误信息
用 法: void perror(char *string);
程序例:

#include

int main(void)
{
FILE *fp;

fp = fopen("perror.dat", "r");
if (!fp)
perror("Unable to open file for reading");
return 0;
}

函数名: pieslice
功 能: 绘制并填充一个扇形
用 法: void far pieslice(int x, int stanle, int endangle, int radius);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
int stangle = 45, endangle = 135, radius = 100;

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

/* set fill style and draw a pie slice */
setfillstyle(EMPTY_FILL, getmaxcolor());
pieslice(midx, midy, stangle, endangle, radius);

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

函数名: poke
功 能: 存值到一个给定存储单元
用 法: void poke(int segment, int offset, int value);
程序例:

#include
#include

int main(void)
{
clrscr();
cprintf("Make sure the scroll lock key is off and press any key\r\n");
getch();
poke(0x0000,0x0417,16);
cprintf("The scroll lock is now on\r\n");
return 0;
}

函数名: pokeb
功 能: 存值到一个给定存储单元
用 法: void pokeb(int segment, int offset, char value);
程序例:

#include
#include

int main(void)
{
clrscr();
cprintf("Make sure the scroll lock key is off and press any key\r\n");
getch();
pokeb(0x0000,0x0417,16);
cprintf("The scroll lock is now on\r\n");
return 0;
}

函数名: poly
功 能: 根据参数产生一个多项式
用 法: double poly(double x, int n, double c[]);
程序例:

#include
#include

/* polynomial: x**3 - 2x**2 + 5x - 1 */

int main(void)
{
double array[] = { -1.0, 5.0, -2.0, 1.0 };
double result;

result = poly(2.0, 3, array);
printf("The polynomial: x**3 - 2.0x**2 + 5x - 1 at 2.0 is %lf\n",
result);
return 0;
}

函数名: pow
功 能: 指数函数(x的y次方)
用 法: double pow(double x, double y);
程序例:

#include
#include

int main(void)
{
double x = 2.0, y = 3.0;

printf("%lf raised to %lf is %lf\n", x, y, pow(x, y));
return 0;
}


函数名: pow10
功 能: 指数函数(10的p次方)
用 法: double pow10(int p);
程序例:

#include
#include

int main(void)
{
double p = 3.0;

printf("Ten raised to %lf is %lf\n", p, pow10(p));
return 0;
}

函数名: printf
功 能: 产生格式化输出的函数
用 法: int printf(char *format...);
程序例:

#include
#include

#define I 555
#define R 5.5

int main(void)
{
int i,j,k,l;
char buf[7];
char *prefix = buf;
char tp[20];
printf("prefix 6d 6o 8x 10.2e "
"10.2f\n");
strcpy(prefix,"%");
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
for (k = 0; k < 2; k++)
for (l = 0; l < 2; l++)
{
if (i==0) strcat(prefix,"-");
if (j==0) strcat(prefix,"+");
if (k==0) strcat(prefix,"#");
if (l==0) strcat(prefix,"0");
printf("%5s |",prefix);
strcpy(tp,prefix);
strcat(tp,"6d |");
printf(tp,I);
strcpy(tp,"");
strcpy(tp,prefix);
strcat(tp,"6o |");
printf(tp,I);
strcpy(tp,"");
strcpy(tp,prefix);
strcat(tp,"8x |");
printf(tp,I);
strcpy(tp,"");
strcpy(tp,prefix);
strcat(tp,"10.2e |");
printf(tp,R);
strcpy(tp,prefix);
strcat(tp,"10.2f |");
printf(tp,R);
printf(" \n");
strcpy(prefix,"%");
}
}
return 0;
}

函数名: putc
功 能: 输出一字符到指定流中
用 法: int putc(int ch, FILE *stream);
程序例:

#include

int main(void)
{
char msg[] = "Hello world\n";
int i = 0;

while (msg[i])
putc(msg[i++], stdout);
return 0;
}

函数名: putch
功 能: 输出字符到控制台
用 法: int putch(int ch);
程序例:

#include
#include

int main(void)
{
char ch = 0;

printf("Input a string:");
while ((ch != '\r'))
{
ch = getch();
putch(ch);
}
return 0;
}

函数名: putchar
功 能: 在stdout上输出字符
用 法: int putchar(int ch);
程序例:

#include

/* define some box-drawing characters */
#define LEFT_TOP 0xDA
#define RIGHT_TOP 0xBF
#define HORIZ 0xC4
#define VERT 0xB3
#define LEFT_BOT 0xC0
#define RIGHT_BOT 0xD9

int main(void)
{
char i, j;

/* draw the top of the box */
putchar(LEFT_TOP);
for (i=0; i<10; i++)
putchar(HORIZ);
putchar(RIGHT_TOP);
putchar('\n');

/* draw the middle */
for (i=0; i<4; i++)
{
putchar(VERT);
for (j=0; j<10; j++)
putchar(' ');
putchar(VERT);
putchar('\n');
}

/* draw the bottom */
putchar(LEFT_BOT);
for (i=0; i<10; i++)
putchar(HORIZ);
putchar(RIGHT_BOT);
putchar('\n');

return 0;
}

函数名: putenv
功 能: 把字符串加到当前环境中
用 法: int putenv(char *envvar);
程序例:

#include
#include
#include
#include
#include

int main(void)
{
char *path, *ptr;
int i = 0;

/* get the current path environment */
ptr = getenv("PATH");

/* set up new path */
path = malloc(strlen(ptr)+15);
strcpy(path,"PATH=");
strcat(path,ptr);
strcat(path,";c:\\temp");

/* replace the current path and display current environment */
putenv(path);
while (environ[i])
printf("%s\n",environ[i++]);

return 0;
}

函数名: putimage
功 能: 在屏幕上输出一个位图
用 法: void far putimage(int x, int y, void far *bitmap, int op);
程序例:

#include
#include
#include
#include

#define ARROW_SIZE 10

void draw_arrow(int x, int y);

int main(void)
{
/* request autodetection */
int gdriver = DETECT, gmode, errorcode;
void *arrow;
int x, y, maxx;
unsigned int size;

/* 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();
x = 0;
y = getmaxy() / 2;

/* draw the image to be grabbed */
draw_arrow(x, y);

/* calculate the size of the image */
size = imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE);

/* allocate memory to hold the image */
arrow = malloc(size);

/* grab the image */
getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE, arrow);

/* repeat until a key is pressed */
while (!kbhit())
{
/* erase old image */
putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);

x += ARROW_SIZE;
if (x >= maxx)
x = 0;

/* plot new image */
putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);
}

/* clean up */
free(arrow);
closegraph();
return 0;
}

void draw_arrow(int x, int y)
{
/* draw an arrow on the screen */
moveto(x, y);
linerel(4*ARROW_SIZE, 0);
linerel(-2*ARROW_SIZE, -1*ARROW_SIZE);
linerel(0, 2*ARROW_SIZE);
linerel(2*ARROW_SIZE, -1*ARROW_SIZE);
}

函数名: putpixel
功 能: 在指定位置画一像素
用 法: void far putpixel (int x, int y, int pixelcolor);
程序例:

#include
#include
#include
#include
#include

#define PIXEL_COUNT 1000
#define DELAY_TIME 100 /* in milliseconds */

int main(void)
{
/* request autodetection */
int gdriver = DETECT, gmode, errorcode;
int i, x, y, color, maxx, maxy, maxcolor, seed;

/* 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() + 1;
maxy = getmaxy() + 1;
maxcolor = getmaxcolor() + 1;

while (!kbhit())
{
/* seed the random number generator */
seed = random(32767);
srand(seed);
for (i=0; i {
x = random(maxx);
y = random(maxy);
color = random(maxcolor);
putpixel(x, y, color);
}

delay(DELAY_TIME);
srand(seed);
for (i=0; i {
x = random(maxx);
y = random(maxy);
color = random(maxcolor);
if (color == getpixel(x, y))
putpixel(x, y, 0);
}
}

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

函数名: puts
功 能: 送一字符串到流中
用 法: int puts(char *string);
程序例:

#include
int main(void)
{
char string[] = "This is an example output string\n";

puts(string);
return 0;
}

函数名: puttext
功 能: 将文本从存储区拷贝到屏幕
用 法: int puttext(int left, int top, int right, int bottom, void *source);
程序例:

#include
int main(void)
{
char buffer[512];

/* put some text to the console */
clrscr();
gotoxy(20, 12);
cprintf("This is a test. Press any key to continue ...");
getch();

/* grab screen contents */
gettext(20, 12, 36, 21,buffer);
clrscr();

/* put selected characters back to the screen */
gotoxy(20, 12);
puttext(20, 12, 36, 21, buffer);
getch();

return 0;
}

函数名: putw
功 能: 把一字符或字送到流中
用 法: int putw(int w, FILE *stream);
程序例:

#include
#include

#define FNAME "test.$$$"

int main(void)
{
FILE *fp;
int word;

/* place the word in a file */
fp = fopen(FNAME, "wb");
if (fp == NULL)
{
printf("Error opening file %s\n", FNAME);
exit(1);
}

word = 94;
putw(word,fp);
if (ferror(fp))
printf("Error writing to file\n");
else
printf("Successful write\n");
fclose(fp);

/* reopen the file */
fp = fopen(FNAME, "rb");
if (fp == NULL)
{
printf("Error opening file %s\n", FNAME);
exit(1);
}

/* extract the word */
word = getw(fp);
if (ferror(fp))
printf("Error reading file\n");
else
printf("Successful read: word = %d\n", word);

/* clean up */
fclose(fp);
unlink(FNAME);

return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值