c语言标准库详解(九):实用函数<stdlib.h>
头文件<stdlib.h>中声明了一些执行数值转换、内存分配以及其他类似工作的函数。
概述
atof
double atof(const char *s)
atof 函数将字符串 s 转换为 double 类型。该函数等价于 strtod ( s, (char**)NULL)。
atoi
int atoi(const char *s)
atoi 函数将字符串 s 转换为 int 类型。该函数等价于(int)strtol(s, (char**)NULL, 10)。
atol
long atol(const char *s)
atol 函数将字符串 s 转换为 long 类型。该函数等价于 strtol(s, (char**)NULL, 10)。
strtod
double strtod(const char *s, char **endp)
strtod 函数将字符串 s 的前缀转换为 double 类型,并在转换时跳过 s 的前导空白符。除了endp为NULL,否则该函数将把指向s中未转换部分(s的后缀部分)的指针保存在*endp中。如果结果上溢,则函数返回带有适当符号 HUGE_VAL;如果结果下溢,则返回 0。在这两种情况下,errno 都将被设置为 ERANGE。
strtol
long strtol(const char *s, char **endp, int base)
strtol 函数将字符串 s 的前缀转换为 long 类型,并在转换时跳过 s 的前导空白符。除非 endp 为 NULL,否则该函数将把指向 s 中末转换部分(s 的后辍部分)的指针保存在*endp 中。如果 base 的取值在 2~36 之间,则假定输入是以该数为基底的;如果 base 的取值为 0,则基底为八进制、十进制或十六进制。以 0 为前缀的是八进制,以 0x 或 0X 为前缀的是十六进制。无论在哪种情况下,字母均表示 10~base-1 之间的数字。如果 base 值是 16,则可以加上前导 0x 或 0X。如果结果上溢,则函数根据结果的符号返回 LONG_MAX 或 LONG_MIN,同时将 errno 的值设置为 ERANGE。
strtoul
unsigned long strtoul(const char *s, char **endp, int base)
strtoul函数的功能与strtol函数相同,但其结果为unsigned long类型,错误值为ULONG_MAX。
rand
int rand(void)
rand函数产生一个0~RAND_MAX之间的伪随机整数。RAND_MAX的取值至少为32767。
srand
void srand(unsigned int seed)
srand函数将seed作为生成新的伪随机数序列的种子数。种子数seed的初值为1。
calloc
void *calloc(size_t nobj, size_t size)
calloc函数为由 nobj 个长度为 size 的对象组成的数组分配内存,并返回指向分配区域的指针;若无法满足要求,则返回 NULL。该空间的初始长度为 0 字节。
malloc
void *malloc(size_t size)
malloc 函数为长度为 size 的对象分配内存,并返回指向分配区域的指针;若无法满足要求,则返回 NULL。该函数不对分配的内存区域进行初始化。
realloc
void *realloc(void *p, size_t size)
realloc 函数将 p 指向的对象的长度修改为 size 个字节。如果新分配的内存比原内存大,则原内存的内容保持不变,增加的空间不进行初始化。如果新分配的内存比原内存小,则新分配内存单元不被初始化:realloc 函数返回指向新分配空间的指针;若无法满足要求,则返回 NULL。在这种情况下,原指针 p 指向的单元内容保持不变。
free
void free(void *p)
free 函数释放 p 指向的内存空间。当 p 的值为 NULL 时,该函数不执行任何操作。P 必须指向先前使用动态分配函数 malloe、realloc 或 calloc 分配的空间。
abort
void abort(void)
abort函数使程序非正常终止。其功能与raise(SIGABRT)类似。
exit
void exit(int status)
exit 函数使程序正常终止。atexit 函数的调用顺序与注册的顺序相反,这种情况下,所有已打开的文件缓冲区将被清洗,所有已打开的流将被关闭,控制也将返回给环境。status的值如何返回给环境要视具体的实现而定,但 0 值表示终止成功。也可使用值 EXIT_SUCCESS 和 EXIT_FAILURE 作为返回值。
atexit
int atexit(void (*fcn)(void))
atexit 函数注册函数 fcn,该函数将在程序正常终止时被调用。如果注册失败,则返回非 0 值。
system
int system(const char *s)
system 函数将字符串 s 传递给执行环境。如果 s 的值为 NULL,并且有命令处理程序,则该函数返回非 0 值。如果 s 的值不是 NULL,则返回值**与具体的实现有关。 **
getenv
char *getenv(const char *name)
getenv 函数返回与 name 有关的环境字符串。如果该字符串不存在,则返回 NULL。其细节与具体的实现有关。
bsearch
void *bsearch(const void *key,const void *base,size_t n,size_t size,int (*cmp)(const void *keyval,const void *datnum))
bsearch 函数在 base[0]…base[n-1]之间查找与*key 匹配的项。在函数 cmp 中,如果第一个参数(查找关键字)小于第二个参数(表项),它必须返回一个负值;如果第一个参数等于第二个参数,它必须返回零;如果第一个参数大于第二个参数,它必须返回一个正值。数组 base 中的项必须按升序排列。bsearch 函数返回一个指针,它指向一个匹配项,如果不存在匹配项,则返回 NULL。
qsort
void qsort(void *base,size_t n,size_t size,int (*cmp)(const void *,const void *))
qsort 函数对 base[0]…base[n-1]数组中的对象进行升序排序,数组中每个对象的长度为 size。比较函数 cmp 与 bsearch 函数中的描述相同。
abs
int abs(int n)
abs函数返回int类型参数n的绝对值。
labs
long labs(long n)
labs函数返回long类型参数n的绝对值。
div
div_t div(int num,int denom)
div函数计算num/denom的商和余数,并把结果分别保存在结构类型div_t的两个int类型的成员quot和rem中。
ldiv
ldiv_t ldiv(long num,long denom)
idiv 函数计算 num/denom 的商和余数,并把结果分别保存在结构类型 idiv_t 的两个long类型的成员quot和rem中。
示例
atof
代码
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){float val;char str[20];strcpy(str, "114514.1919810");val = atof(str);printf("字符串值 = %s, 浮点值 = %f\n", str, val);strcpy(str, "MAGA");val = atof(str);printf("字符串值 = %s, 浮点值 = %f\n", str, val);return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-wi4bj35e.lv2' '--stdout=Microsoft-MIEngine-Out-m2pfdpyn.juk' '--stderr=Microsoft-MIEngine-Error-fc22tpzv.qjd' '--pid=Microsoft-MIEngine-Pid-ggcipet3.olq' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi'字符串值 = 114514.1919810, 浮点值 = 114514.195313字符串值 = MAGA, 浮点值 = 0.000000PS G:\CSAPP>
atoi
代码
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){int val;char str[20];strcpy(str, "114514");val = atoi(str);printf("字符串值 = %s, 整型值 = %d\n", str, val);strcpy(str, "King of knowing");val = atoi(str);printf("字符串值 = %s, 整型值 = %d\n", str, val);return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-b0mz0s3w.vig' '--stdout=Microsoft-MIEngine-Out-2rdqnedv.5v1' '--stderr=Microsoft-MIEngine-Error-pe3upngg.4qg' '--pid=Microsoft-MIEngine-Pid-itwhaq0l.0rb' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' 字符串值 = 114514, 整型值 = 114514字符串值 = King of knowing, 整型值 = 0PS G:\CSAPP>
atol
代码
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){long val;char str[20];strcpy(str, "1145141919810");//这里好像溢出了,2333val = atol(str);printf("字符串值 = %s, 长整型值 = %ld\n", str, val);strcpy(str, "no one knows better than me");val = atol(str);printf("字符串值 = %s, 长整型值 = %ld\n", str, val);return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-p1w5cmak.y5j' '--stdout=Microsoft-MIEngine-Out-hn4zk2po.bax' '--stderr=Microsoft-MIEngine-Error-ey03orpu.lsv' '--pid=Microsoft-MIEngine-Pid-sqarirwh.3j2' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' 字符串值 = 1145141919810, 长整型值 = -1614348222字符串值 = no one knows better than me, 长整型值 = 0PS G:\CSAPP>
strtod
代码
#include <stdio.h>#include <stdlib.h>int main(){char str[30] = "115514.1919810 Deep Dark Fantasy";char *ptr;double ret;ret = strtod(str, &ptr);printf("数字(double)是 %lf\n", ret);printf("字符串部分是 |%s|", ptr);return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-xafg4iyb.ryj' '--stdout=Microsoft-MIEngine-Out-bfhsikkl.r3t' '--stderr=Microsoft-MIEngine-Error-d' '--pid=Microsoft-MIEngine-Pid-moljvfew.gvp' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' 数字(double)是 115514.191981字符串部分是 | Deep Dark Fanta|PS G:\CSAPP>
strtol
代码
#include <stdio.h>#include <stdlib.h>int main(){char str[30] = "1919810 I'm an artist";char *ptr;long ret;ret = strtol(str, &ptr, 10);printf("数字(无符号长整数)是 %ld\n", ret);printf("字符串部分是 |%s|", ptr);return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-0fxo35q5.0xc' '--stdout=Microsoft-MIEngine-Out-55b0s21g.5as' '--stderr=Microsoft-MIEngine-Error-2rjy5x1n.4sq' '--pid=Microsoft-MIEngine-Pid-co5s5lgk.w2p' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' 数字(无符号长整数)是 1919810字符串部分是 | I'm an artist|PS G:\CSAPP>
strtoul
代码
#include <stdio.h>#include <stdlib.h>int main(){char str[30] = "114514 boy next door";char *ptr;long ret;ret = strtoul(str, &ptr, 10);printf("数字(无符号长整数)是 %lu\n", ret);printf("字符串部分是 |%s|", ptr);return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-riu2y0o5.oif' '--stdout=Microsoft-MIEngine-Out-rdrzhpa2.r2g' '--stderr=Microsoft-MIEngine-Error-gun2f3j3.ij5' '--pid=Microsoft-MIEngine-Pid-abq231c4.ojg' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' 数字(无符号长整数)是 114514字符串部分是 | boy next door|PS G:\CSAPP>
rand
代码
#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){int i, n;time_t t;n = 5;srand((unsigned) time(&t));/* 输出 0 到 114514 之间的 5 个随机数 */for( i = 0 ; i < n ; i++ ) {printf("%d\n", rand() % 114514);}return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-4vnbjkcr.rk5' '--stdout=Microsoft-MIEngine-Out-d4zujvyp.yj1' '--stderr=Microsoft-MIEngine-Error-csiro0pf.kxk' '--pid=Microsoft-MIEngine-Pid-z1zb2sa5.hz3' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' 28580974319737986226194PS G:\CSAPP>
srand
代码
#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){int i, n;time_t t;n = 5;srand((unsigned) time(&t));/* 输出 0 到 114514 之间的 5 个随机数 */for( i = 0 ; i < n ; i++ ) {printf("%d\n", rand() % 50);}return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-rkojtvky.lnw' '--stdout=Microsoft-MIEngine-Out-hs31gvnq.4jd' '--stderr=Microsoft-MIEngine-Error-rpfn1qe0.5qy' '--pid=Microsoft-MIEngine-Pid-ucuuf1z2.vgs' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' 133725204PS G:\CSAPP>
calloc
代码
#include <stdio.h>#include <stdlib.h>int main(){int i, n;int *a;printf("要输入的元素个数:");scanf("%d",&n);a = (int*)calloc(n, sizeof(int));printf("输入 %d 个数字:\n",n);for( i=0 ; i < n ; i++ ) {scanf("%d",&a[i]);}printf("输入的数字为:");for( i=0 ; i < n ; i++ ) {printf("%d ",a[i]);}free (a); // 释放内存return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-rbwyy2by.lxd' '--stdout=Microsoft-MIEngine-Out-euviclev.1vm' '--stderr=Microsoft-MIEngine-Error-ydn10f3p.4ah' '--pid=Microsoft-MIEngine-Pid-uf51kdoc.cvt' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' 要输入的元素个数:3输入 3 个数字:114输入的数字为:1 1 4PS G:\CSAPP>
malloc
代码
#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){char *str;/* 最初的内存分配 */str = (char *) malloc(15);strcpy(str, "114514");printf("String = %s, Address = %u\n", str, str);/* 重新分配内存 */str = (char *) realloc(str, 25);strcat(str, ".1919810");printf("String = %s, Address = %u\n", str, str);free(str);return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-bfeestmu.v2w' '--stdout=Microsoft-MIEngine-Out-rydfbj1o.zh4' '--stderr=Microsoft-MIEngine-Error-bbzzwfc4.zaw' '--pid=Microsoft-MIEngine-Pid-qgd4iiey.i5d' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' String = 114514, Address = 12925760String = 114514.1919810, Address = 12929968PS G:\CSAPP>
realloc
代码
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){char *str;/* 最初的内存分配 */str = (char *) malloc(15);strcpy(str, "swy0");printf("String = %s, Address = %p\n", str, str);/* 重新分配内存 */str = (char *) realloc(str, 25);strcat(str, ".github.io");printf("String = %s, Address = %p\n", str, str);free(str);return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-zrayxjah.dng' '--stdout=Microsoft-MIEngine-Out-km2mpg4c.qes' '--stderr=Microsoft-MIEngine-Error-hrigx225.bok' '--pid=Microsoft-MIEngine-Pid-lprzjuor.evb' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' String = swy0, Address = 0000000000B33B40String = swy0.github.io, Address = 0000000000B34BB0PS G:\CSAPP>
free
见以上代码
abort
代码
#include <stdio.h>#include <stdlib.h>int main (){FILE *fp;printf("准备打开 brainOfTrump.txt\n");fp = fopen( "brainOfTrump.txt","r" );if(fp == NULL){printf("准备终止程序\n");abort();}printf("准备关闭 brainOfTrump.txt\n");fclose(fp);return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-0qzhqslw.k0n' '--stdout=Microsoft-MIEngine-Out-yfaqjfff.ynl' '--stderr=Microsoft-MIEngine-Error-edtophcp.kk1' '--pid=Microsoft-MIEngine-Pid-zvo12ah5.2ru' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' 准备打开 brainOfTrump.txt准备终止程序PS G:\CSAPP>
exit
略
atexit
代码
#include <stdio.h>#include <stdlib.h>void functionA (){printf("这是函数A\n");}int main (){/* 注册终止函数 */atexit(functionA );printf("启动主程序...\n");printf("退出主程序...\n");return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-txdgsa1b.44y' '--stdout=Microsoft-MIEngine-Out-ix1wlj44.khj' '--stderr=Microsoft-MIEngine-Error-4hshwo4g.fzj' '--pid=Microsoft-MIEngine-Pid-nwgredo1.1cm' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' 启动主程序...退出主程序...这是函数APS G:\CSAPP>
system
代码
#include <stdio.h>#include <string.h>int main (){char command[50];strcpy( command, "dir" );system(command);return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-yb24i1g4.czx' '--stdout=Microsoft-MIEngine-Out-if3sqxo3.svt' '--stderr=Microsoft-MIEngine-Error-0qjjzazj.tva' '--pid=Microsoft-MIEngine-Pid-3kjo2fpb.nfu' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' Volume in drive G is 新加卷Volume Serial Number is 1ACE-4613Directory of G:\CSAPP/05/03 23:21 <DIR>...PS G:\CSAPP>
getenv
略
bsearch
代码
#include <stdio.h>#include <stdlib.h>int cmpfunc(const void * a, const void * b){return ( *(int*)a - *(int*)b );}int values[] = {1, 2, 4, 8, 16 };int main (){int *item;int key = 8;/* 使用 bsearch() 在数组中查找值 8 */item = (int*) bsearch (&key, values, 5, sizeof (int), cmpfunc);if( item != NULL ) {printf("Found item = %d\n", *item);}else {printf("Item = %d could not be found\n", *item);}return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-qpylfvl1.sdc' '--stdout=Microsoft-MIEngine-Out-enza4t1x.3v4' '--stderr=Microsoft-MIEngine-Error-4ayhrm3e.gsm' '--pid=Microsoft-MIEngine-Pid-eycid5ux.jye' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' Found item = 8PS G:\CSAPP>
qsort
#include <stdio.h>#include <stdlib.h>int values[] = {11, 45, 14, 1, 91 };int cmpfunc (const void * a, const void * b){return ( *(int*)a - *(int*)b );}int main(){int n;printf("排序之前的列表:\n");for( n = 0 ; n < 5; n++ ) {printf("%d ", values[n]);}qsort(values, 5, sizeof(int), cmpfunc);printf("\n排序之后的列表:\n");for( n = 0 ; n < 5; n++ ) {printf("%d ", values[n]);} return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-zuhd5uml.4kt' '--stdout=Microsoft-MIEngine-Out-vokjbnd0.u0l' '--stderr=Microsoft-MIEngine-Error-bmzp1vhd.w3z' '--pid=Microsoft-MIEngine-Pid-aszae1gz.ody' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' 排序之前的列表:11 45 14 1 91排序之后的列表:1 11 14 45 91PS G:\CSAPP>
abs
代码
#include <stdio.h>#include <stdlib.h>int main (){int a, b;a = abs(114);printf("a 的值 = %d\n", a);b = abs(-514);printf("b 的值 = %d\n", b);return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-qmtru34r.xc3' '--stdout=Microsoft-MIEngine-Out-wyoasal3.wws' '--stderr=Microsoft-MIEngine-Error-4cgvf1e4.x3j' '--pid=Microsoft-MIEngine-Pid-dkoc020p.s2m' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' a 的值 = 114b 的值 = 514PS G:\CSAPP>
labs
同上
div
代码
#include <stdio.h>#include <stdlib.h>int main(){div_t output;output = div(27, 4);printf("(27/ 4) 的商 = %d\n", output.quot);printf("(27/4) 的余数 = %d\n", output.rem);output = div(27, 3);printf("(27/ 3) 的商 = %d\n", output.quot);printf("(27/3) 的余数 = %d\n", output.rem);return(0);}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-4ymsl54p.oza' '--stdout=Microsoft-MIEngine-Out-3qhi3ny1.3j2' '--stderr=Microsoft-MIEngine-Error-kxzuscnz.ofy' '--pid=Microsoft-MIEngine-Pid-0z3heoqb.iv3' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' (27/ 4) 的商 = 6(27/4) 的余数 = 3(27/ 3) 的商 = 9(27/3) 的余数 = 0PS G:\CSAPP>
ldiv
略。同上。
如果觉得《c语言标准库详解(九):实用函数stdlib.h》对你有帮助,请点赞、收藏,并留下你的观点哦!