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 Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor