zoukankan      html  css  js  c++  java
  • C语言库函数大全及应用实例十

                                                [编程资料]C语言库函数大全及应用实例十

    函数名: qsort
    功 能: 使用快速排序例程进行排序
    用 法: void qsort(void *base, int nelem, int width, int (*fcmp)());
    程序例:

    #i nclude
    #i nclude
    #i nclude

    int sort_function( const void *a, const void *b);

    char list[5][4] = { "cat", "car", "cab", "cap", "can" };

    int main(void)
    {
    int x;

    qsort((void *)list, 5, sizeof(list[0]), sort_function);
    for (x = 0; x < 5; x++)
    printf("%s\n", list[x]);
    return 0;
    }

    int sort_function( const void *a, const void *b)
    {
    return( strcmp(a,b) );
    }

    函数名: qsort
    功 能: 使用快速排序例程进行排序
    用 法: void qsort(void *base, int nelem, int width, int (*fcmp)());
    程序例:

    #i nclude
    #i nclude
    #i nclude

    int sort_function( const void *a, const void *b);

    char list[5][4] = { "cat", "car", "cab", "cap", "can" };

    int main(void)
    {
    int x;

    qsort((void *)list, 5, sizeof(list[0]), sort_function);
    for (x = 0; x < 5; x++)
    printf("%s\n", list[x]);
    return 0;
    }

    int sort_function( const void *a, const void *b)
    {
    return( strcmp(a,b) );
    }

     

    函数名: raise
    功 能: 向正在执行的程序发送一个信号
    用 法: int raise(int sig);
    程序例:

    #i nclude

    int main(void)
    {
    int a, b;

    a = 10;
    b = 0;
    if (b == 0)
    /* preempt divide by zero error */
    raise(SIGFPE);
    a = a / b;
    return 0;
    }

    函数名: rand
    功 能: 随机数发生器
    用 法: void rand(void);
    程序例:

    #i nclude
    #i nclude

    int main(void)
    {
    int i;

    printf("Ten random numbers from 0 to 99\n\n");
    for(i=0; i<10; i++)
    printf("%d\n", rand() % 100);
    return 0;
    }

    函数名: randbrd
    功 能: 随机块读
    用 法: int randbrd(struct fcb *fcbptr, int reccnt);
    程序例:

    #i nclude
    #i nclude
    #i nclude
    #i nclude

    int main(void)
    {
    char far *save_dta;
    char line[80], buffer[256];
    struct fcb blk;
    int i, result;

    /* get user input file name for dta */
    printf("Enter drive and file name (no path - i.e. a:file.dat)\n");
    gets(line);

    /* put file name in fcb */
    if (!parsfnm(line, &blk, 1))
    {
    printf("Error in call to parsfnm\n");
    exit(1);
    }
    printf("Drive #%d file: %s\n\n", blk.fcb_drive, blk.fcb_name);

    /* open file with DOS FCB open file */
    bdosptr(0x0F, &blk, 0);

    /* save old dta, and set new one */
    save_dta = getdta();
    setdta(buffer);

    /* set up info for the new dta */
    blk.fcb_recsize = 128;
    blk.fcb_random = 0L;
    result = randbrd(&blk, 1);

    /* check results from randbrd */
    if (!result)
    printf("Read OK\n\n");
    else
    {
    perror("Error during read");
    exit(1);
    }

    /* read in data from the new dta */
    printf("The first 128 characters are:\n");
    for (i=0; i<128; i++)
    putchar(buffer[i]);

    /* restore previous dta */
    setdta(save_dta);

    return 0;
    }

    函数名: randbwr
    功 能: 随机块写
    用 法: int randbwr(struct fcp *fcbptr, int reccnt);
    程序例:

    #i nclude
    #i nclude
    #i nclude
    #i nclude

    int main(void)
    {
    char far *save_dta;
    char line[80];
    char buffer[256] = "RANDBWR test!";
    struct fcb blk;
    int result;

    /* get new file name from user */
    printf("Enter a file name to create (no path - ie. a:file.dat\n");
    gets(line);

    /* parse the new file name to the dta */
    parsfnm(line,&blk,1);
    printf("Drive #%d file: %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);

    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;
    }

    函数名: random
    功 能: 随机数发生器
    用 法: int random(int num);
    程序例:

    #i nclude
    #i nclude
    #i nclude

    /* prints a random number in the range 0 to 99 */
    int main(void)
    {
    randomize();
    printf("Random number in the 0-99 range: %d\n", random (100));
    return 0;
    }

    函数名: randomize
    功 能: 初始化随机数发生器
    用 法: void randomize(void);
    程序例:

    #i nclude
    #i nclude
    #i nclude

    int main(void)
    {
    int i;

    randomize();
    printf("Ten random numbers from 0 to 99\n\n");
    for(i=0; i<10; i++)
    printf("%d\n", rand() % 100);
    return 0;
    }

    函数名: read
    功 能: 从文件中读
    用 法: int read(int handle, void *buf, int nbyte);
    程序例:

    #i nclude
    #i nclude
    #i nclude
    #i nclude
    #i nclude
    #i nclude

    int main(void)
    {
    void *buf;
    int handle, bytes;

    buf = malloc(10);

    /*
    Looks for a file in the current directory named TEST.$$$ and attempts
    to read 10 bytes from it. To use this example you should create the
    file TEST.$$$
    */
    if ((handle =
    open("TEST.$$$", O_RDONLY | O_BINARY, S_IWRITE | S_IREAD)) == -1)
    {
    printf("Error Opening File\n");
    exit(1);
    }

    if ((bytes = read(handle, buf, 10)) == -1) {
    printf("Read Failed.\n");
    exit(1);
    }
    else {
    printf("Read: %d bytes read.\n", bytes);
    }
    return 0;
    }

    函数名: realloc
    功 能: 重新分配主存
    用 法: void *realloc(void *ptr, unsigned newsize);
    程序例:

    #i nclude
    #i nclude
    #i nclude

    int main(void)
    {
    char *str;

    /* allocate memory for string */
    str = malloc(10);

    /* copy "Hello" into string */
    strcpy(str, "Hello");

    printf("String is %s\n Address is %p\n", str, str);
    str = realloc(str, 20);
    printf("String is %s\n New address is %p\n", str, str);

    /* free memory */
    free(str);

    return 0;
    }

    函数名: rectangle
    功 能: 画一个矩形
    用 法: void far rectangle(int left, int top, int right, int bottom);
    程序例:

    #i nclude
    #i nclude
    #i nclude
    #i nclude

    int main(void)
    {
    /* request auto detection */
    int gdriver = DETECT, gmode, errorcode;
    int left, top, right, bottom;

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

    left = getmaxx() / 2 - 50;
    top = getmaxy() / 2 - 50;
    right = getmaxx() / 2 + 50;
    bottom = getmaxy() / 2 + 50;

    /* draw a rectangle */
    rectangle(left,top,right,bottom);

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

    函数名: registerbgidriver
    功 能: 登录已连接进来的图形驱动程序代码
    用 法: int registerbgidriver(void(*driver)(void));
    程序例:

    #i nclude
    #i nclude
    #i nclude
    #i nclude

    int main(void)
    {
    /* request auto detection */
    int gdriver = DETECT, gmode, errorcode;

    /* register a driver that was added into graphics.lib */
    errorcode = registerbgidriver(EGAVGA_driver);

    /* report any registration errors */
    if (errorcode < 0)
    {
    printf("Graphics error: %s\n", grapherrormsg(errorcode));
    printf("Press any key to halt:");
    getch();
    exit(1); /* terminate with an error code */
    }

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

    /* draw a line */
    line(0, 0, getmaxx(), getmaxy());

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

    函数名: remove
    功 能: 删除一个文件
    用 法: int remove(char *filename);
    程序例:

    #i nclude

    int main(void)
    {
    char file[80];

    /* prompt for file name to delete */
    printf("File to delete: ");
    gets(file);

    /* delete the file */
    if (remove(file) == 0)
    printf("Removed %s.\n",file);
    else
    perror("remove");

    return 0;
    }

    函数名: rename
    功 能: 重命名文件
    用 法: int rename(char *oldname, char *newname);
    程序例:

    #i nclude

    int main(void)
    {
    char oldname[80], newname[80];

    /* prompt for file to rename and new name */
    printf("File to rename: ");
    gets(oldname);
    printf("New name: ");
    gets(newname);

    /* Rename the file */
    if (rename(oldname, newname) == 0)
    printf("Renamed %s to %s.\n", oldname, newname);
    else
    perror("rename");

    return 0;
    }

    函数名: restorecrtmode
    功 能: 将屏幕模式恢复为先前的imitgraph设置
    用 法: void far restorecrtmode(void);
    程序例:

    #i nclude
    #i nclude
    #i nclude
    #i nclude

    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;
    }

    函数名: rewind
    功 能: 将文件指针重新指向一个流的开头
    用 法: int rewind(FILE *stream);
    程序例:

    #i nclude
    #i nclude

    int main(void)
    {
    FILE *fp;
    char *fname = "TXXXXXX", *newname, first;

    newname = mktemp(fname);
    fp = fopen(newname,"w+");
    fprintf(fp,"abcdefghijklmnopqrstuvwxyz");
    rewind(fp);
    fscanf(fp,"%c",&first);
    printf("The first character is: %c\n",first);
    fclose(fp);
    remove(newname);

    return 0;
    }

    函数名: rmdir
    功 能: 删除DOS文件目录
    用 法: int rmdir(char *stream);
    程序例:

    #i nclude
    #i nclude
    #i nclude
    #i nclude

    #define DIRNAME "testdir.$$$"

    int main(void)
    {
    int stat;

    stat = mkdir(DIRNAME);
    if (!stat)
    printf("Directory created\n");
    else
    {
    printf("Unable to create directory\n");
    exit(1);
    }

    getch();
    system("dir/p");
    getch();

    stat = rmdir(DIRNAME);
    if (!stat)
    printf("\nDirectory deleted\n");
    else
    {
    perror("\nUnable to delete directory\n");
    exit(1);
    }

    return 0;
    }


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

    #i nclude
    #i nclude

    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,...]);
    程序例:

    #i nclude
    #i nclude

    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("%20s", 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("%20s %d %lf", name, &age, &salary);

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

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

    #i nclude
    #i nclude

    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);
    程序例:

    #i nclude
    #i nclude
    #i nclude
    #i nclude

    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);
    程序例:

    #i nclude
    #i nclude

    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);
    程序例:

    #i nclude
    #i nclude
    #i nclude
    #i nclude

    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);
    程序例:

    #i nclude
    #i nclude
    #i nclude
    #i nclude

    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);
    程序例:

    #i nclude
    #i nclude
    #i nclude
    #i nclude

    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;
    }

  • 相关阅读:
    calc常用
    windbg学习---.browse打开一个新的command 窗口
    Native wifi API使用
    驱动学习---PAE--virtual address to physics address
    windbg学习.formats--转换成各种进制
    windbg学习---!thread和.thread
    windbg学习----.process
    windbg学习---!process
    windbg命令----!idt
    16进制转换成字符串
  • 原文地址:https://www.cnblogs.com/jimeper/p/304961.html
Copyright © 2011-2022 走看看