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

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

头文件中声明了一些执行数值转换、内存分配以及其他类似工作的函数。

概述

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 
#include 
#include 
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 
#include 
#include 
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 
#include 
#include 
int main()
{
   long val;
   char str[20];
   strcpy(str, "1145141919810");//这里好像溢出了,2333
   val = 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 
#include 
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 
#include 
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 
#include 
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 
#include 
#include 
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 
#include 
#include 
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 
#include 
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 
#include 
#include 
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 
#include 
#include 
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 
#include 
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 
#include 
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 
#include 
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-4613

 Directory of G:\CSAPP

2020/05/03  23:21    <DIR>          .
          ..

PS G:\CSAPP> 

getenv

bsearch

代码

#include 
#include 
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 
#include 
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 
#include 
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 
#include 
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语言)