c语言标准库详解(九):实用函数stdlib.h

2024-03-02 15:32

本文主要是介绍c语言标准库详解(九):实用函数stdlib.h,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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.000000
PS 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, 整型值 = 0
PS 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, 长整型值 = 0
PS 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-xt2bjyjj.cnd' '--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' 
28580
9743
19737
9862
26194
PS 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' 
13
37
25
20
4
PS 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 个数字:
1
1
4
输入的数字为:1 1 4
PS 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 = 12925760
String = 114514.1919810,  Address = 12929968
PS G:\CSAPP>

realloc

代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{char *str;/* 最初的内存分配 */str = (char *) malloc(15);strcpy(str, "swy20190");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 = swy20190,  Address = 0000000000B33B40
String = swy20190.github.io,  Address = 0000000000B34BB0
PS 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' 
启动主程序...
退出主程序...
这是函数A
PS 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:\CSAPP2020/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 = 8
PS 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 91
PS 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 的值 = 114
b 的值 = 514
PS 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) 的余数 = 0
PS G:\CSAPP>

ldiv

略。同上。

这篇关于c语言标准库详解(九):实用函数stdlib.h的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/766587

相关文章

Spring IOC的三种实现方式详解

《SpringIOC的三种实现方式详解》:本文主要介绍SpringIOC的三种实现方式,在Spring框架中,IOC通过依赖注入来实现,而依赖注入主要有三种实现方式,构造器注入、Setter注入... 目录1. 构造器注入(Cons编程tructor Injection)2. Setter注入(Setter

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代