C语言教程 第11页 C 库函数 – rand() C 标准库 – <stdlib.h> 描述 C 库函数 int rand(void) 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。 RAND_MAX 是一个常量,它的默认值在不同的实现中会有所不同,但是值至少是 32767。 声明 下面是 rand() 函数的声明。 int rand(void) 参数 NA 返回值 该函数返回一个范围在 0 到 RAND_MAX 之间的整数值。 实例 下面的实例演示了 rand() 函数的用法。 #include <stdio.h> #include <stdlib.h> int main() { int i, n; time_t t; n = 5; /* 初始化随机数发生器 */ srand((unsigned) time(&t)); /* 输出 0 到 49 之间的 5 个随机数 */ for( i = 0 ; i < n ; i++ ) { printf("%d\n", rand() % 50); } return(0); } 让我们编译并运行上面的程序,这将产生以下结果: 38 45 29 29 47 C 标准库 – <stdlib.h>
2024-04-03
C 库函数 – memmove() C 标准库 – <string.h> 描述 C 库函数 void *memmove(void *str1, const void *str2, size_t n) 从 str2 复制 n 个字符到 str1,但是在重叠内存块这方面,memmove() 是比 memcpy() 更安全的方法。如果目标区域和源区域有重叠的话,memmove() 能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改。如果目标区域与源区域没有重叠,则和 memcpy() 函数功能相同。 声明 下面是 memmove() 函数的声明。 void *memmove(void *str1, const void *str2, size_t n) 参数 str1 — 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。 str2 — 指向要复制的数据源,类型强制转换为 void* 指针。 n — 要被复制的字节数。 返回值 该函数返回一个指向目标存储区 str1 的指针。 实例 下面的实例演示了 memmove() 函数的用法。 #include <stdio.h> #include <string.h> int main () { const char dest[] = "oldstring"; const char src[] = "newstring"; printf("Before memmove dest = %s, src = %s\n", dest, src); memmove(dest, src, 9); printf("After memmove dest = %s, src = %s\n", dest, src); return(0); } 让我们编译并运行上面的程序,这将产生以下结果: Before memmove dest = oldstring, src = newstring After memmove dest...
2024-04-03
C 库函数 – exit() C 标准库 – <stdlib.h> 描述 C 库函数 void exit(int status) 立即终止调用进程。任何属于该进程的打开的文件描述符都会被关闭,该进程的子进程由进程 1 继承,初始化,且会向父进程发送一个 SIGCHLD 信号。 声明 下面是 exit() 函数的声明。 void exit(int status) 参数 status — 返回给父进程的状态值。 返回值 该函数不返回值。 实例 下面的实例演示了 exit() 函数的用法。 #include <stdio.h> #include <stdlib.h> int main () { printf("程序的开头....\n"); printf("退出程序....\n"); exit(0); printf("程序的结尾....\n"); return(0); } 让我们编译并运行上面的程序,这将产生以下结果: 程序的开头.... 退出程序.... C 标准库 – <stdlib.h>
2024-04-03
C 库函数 – srand() C 标准库 – <stdlib.h> 描述 C 库函数 void srand(unsigned int seed) 播种由函数 rand 使用的随机数发生器。 声明 下面是 srand() 函数的声明。 void srand(unsigned int seed) 参数 seed — 这是一个整型值,用于伪随机数生成算法播种。 返回值 该函数不返回任何值。 实例 下面的实例演示了 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 到 50 之间的 5 个随机数 */ for( i = 0 ; i < n ; i++ ) { printf("%d\n", rand() % 50); } return(0); } 让我们编译并运行上面的程序,这将产生以下结果: 38 45 29 29 47 C 标准库 – <stdlib.h>
2024-04-03
C 库函数 – memset() C 标准库 – <string.h> 描述 C 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。 声明 下面是 memset() 函数的声明。 void *memset(void *str, int c, size_t n) 参数 str — 指向要填充的内存块。 c — 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。 n — 要被设置为该值的字节数。 返回值 该值返回一个指向存储区 str 的指针。 实例 下面的实例演示了 memset() 函数的用法。 #include <stdio.h> #include <string.h> int main () { char str[50]; strcpy(str,"This is string.h library function"); puts(str); memset(str,'$',7); puts(str); return(0); } 让我们编译并运行上面的程序,这将产生以下结果: This is string.h library function $$$$$$$ string.h library function C 标准库 – <string.h>
2024-04-03
C 库函数 – realloc() C 标准库 – <stdlib.h> 描述 C 库函数 void *realloc(void *ptr, size_t size) 尝试重新调整之前调用 malloc 或 calloc 所分配的 ptr 所指向的内存块的大小。 声明 下面是 realloc() 函数的声明。 void *realloc(void *ptr, size_t size) 参数 ptr — 指针指向一个要重新分配内存的内存块,该内存块之前是通过调用 malloc、calloc 或 realloc 进行分配内存的。如果为空指针,则会分配一个新的内存块,且函数返回一个指向它的指针。 size — 内存块的新的大小,以字节为单位。如果大小为 0,且 ptr 指向一个已存在的内存块,则 ptr 所指向的内存块会被释放,并返回一个空指针。 返回值 该函数返回一个指针 ,指向重新分配大小的内存。如果请求失败,则返回 NULL。 实例 下面的实例演示了 realloc() 函数的用法。 #include <stdio.h> #include <stdlib.h> int main() { char *str; /* 最初的内存分配 */ str = (char *) malloc(15); strcpy(str, "w3cschool"); printf("String = %s, Address = %u\n", str, str); /* 重新分配内存 */ str = (char *) realloc(str, 25); strcat(str, ".cn"); printf("String = %s, Address = %u\n", str, str); free(str); return(0); } 让我们编译并运行上面的程序,这将产生以下结果: String = w3cschool, Address = 355090448 String = w3cschool.cn, Address = 355090448 C 标准库...
2024-04-03
C 库函数 – labs() C 标准库 – <stdlib.h> 描述 C 库函数 long int labs(long int x) 返回 x 的绝对值。 声明 下面是 labs() 函数的声明。 long int labs(long int x) 参数 x — 完整的值。 返回值 该函数返回 x 的绝对值。 实例 下面的实例演示了 labs() 函数的用法。 #include <stdio.h> #include <stdlib.h> int main () { long int a,b; a = labs(65987L); printf("a 的值 = %ld\n", a); b = labs(-1005090L); printf("b 的值 = %ld\n", b); return(0); } 让我们编译并运行上面的程序,这将产生以下结果: a 的值 = 65987 b 的值 = 1005090 C 标准库 – <stdlib.h>
2024-04-03
C 库函数 – abort() C 标准库 – <stdlib.h> 描述 C 库函数 void abort(void) 中止程序执行,直接从调用的地方跳出。 声明 下面是 abort() 函数的声明。 void abort(void) 参数 NA 返回值 该函数不返回任何值。 实例 下面的实例演示了 abort() 函数的用法。 #include <stdio.h> #include <stdlib.h> int main () { FILE *fp; printf("准备打开 nofile.txt\n"); fp = fopen( "nofile.txt","r" ); if(fp == NULL) { printf("准备终止程序\n"); abort(); } printf("准备关闭 nofile.txt\n"); fclose(fp); return(0); } 让我们编译并运行上面的程序,这将产生以下结果,因为我们尝试打开的文件 nofile.txt 是不存在的: 准备打开 nofile.txt 准备终止程序 C 标准库 – <stdlib.h>
2024-04-03
C 库函数 – ldiv() C 标准库 – <stdlib.h> 描述 C 库函数 div_t div(long int numer, long int denom) 把 numer(分子)除以 denom(分母)。 声明 下面是 ldiv() 函数的声明。 div_t div(long int numer, long int denom) 参数 numer — 分子。 denom — 分母。 返回值 该函数返回定义在 <cstdlib> 中的结构中的值,该结构有两个成员,如 ldiv_t:long quot; long rem;。 实例 下面的实例演示了 ldiv() 函数的用法。 #include <stdio.h> #include <stdlib.h> int main () { ldiv_t output; output = ldiv(100000L, 30000L); printf("商 = %ld\n", output.quot); printf("余数 = %ld\n", output.rem); return(0); } 让我们编译并运行上面的程序,这将产生以下结果: 商 = 3 余数 = 10000 C 标准库 – <stdlib.h>
2024-04-03
C 库函数 – memcpy() C 标准库 – <string.h> 描述 C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字符到存储区 str1。 声明 下面是 memcpy() 函数的声明。 void *memcpy(void *str1, const void *str2, size_t n) 参数 str1 — 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。 str2 — 指向要复制的数据源,类型强制转换为 void* 指针。 n — 要被复制的字节数。 返回值 该函数返回一个指向目标存储区 str1 的指针。 实例 下面的实例演示了 memcpy() 函数的用法。 #include <stdio.h> #include <string.h> int main () { const char src[50] = "http://www.w3cschool.cn"; char dest[50]; printf("Before memcpy dest = %s\n", dest); memcpy(dest, src, strlen(src)+1); printf("After memcpy dest = %s\n", dest); return(0); } 让我们编译并运行上面的程序,这将产生以下结果: Before memcpy dest = After memcpy dest = http://www.w3cschool.cn C 标准库 – <string.h>
2024-04-03