The standard library provides a wide variety of functions. This section is a brief synopsis of the most useful. More details and many other functions can be found in Appendix B.
1 String OperationsWe have already mentioned the string functions strlen, strcpy, strcat, and strcmp, found in <string.h>. In the following, s and t are char *'s, and c and n are =int=s.

文章插图
2 Character Class Testing and ConversionSeveral functions from <ctype.h> perform character tests and conversions. In the following, c is an int that can be represented as an unsigned char or EOF. The function returns int.

文章插图
3 UngetcThe standard library provides a rather restricted version of the function ungetch that we wrote in Chapter 4; it is called ungetc.
int ungetc(int c, FILE *fp)pushes the character c back onto file fp, and returns either c, or EOF for an error. Only one character of pushback is guaranteed per file. ungetc may be used with any of the input functions like scanf, getc, or getchar.4 Command ExecutionThe function system(char *s) executes the command contained in the character string s, then resumes execution of the current program. The contents of s depend strongly on the local operating system. As a trivial example, on UNIX systems, the statement
system("date");causes the program date to be run; it prints the date and time of day on the standard output. system returns a system-dependent integer status from the command executed. In the UNIX system, the status return is the value returned by exit.system("date");5 Storage ManagementThe functions malloc and calloc obtain blocks of memory dynamically.void *malloc(size_t n)=returns a pointer to n bytes of uninitialized storage, or NULL if the request cannot be satisfied.void *calloc(size_t n, size_t size)returns a pointer to enough free space for an array of n objects of the specified size, or NULL if the request cannot be satisfied. The storage is initialized to zero.The pointer returned by malloc or calloc has the proper alignment for the object in question, but it must be cast into the appropriate type, as in
int *ip;ip = (int *) calloc(n, sizeof(int));free(p) frees the space pointed to by p, where p was originally obtained by a call to malloc or calloc. There are no restrictions on the order in which space is freed, but it is a ghastly error to free something not obtained by calling malloc or calloc.It is also an error to use something after it has been freed. A typical but incorrect piece of code is this loop that frees items from a list:
for (p = head; p != NULL; p = p->next) /* WRONG */ free(p);The right way is to save whatever is needed before freeing:for (p = head; p != NULL; p = q) { q = p->next; free(p);}Section 8.7 shows the implementation of a storage allocator like malloc, in which allocated blocks may be freed in any order.6 Mathematical FunctionsThere are more than twenty mathematical functions declared in <math.h>; here are some of the more frequently used. Each takes one or two double arguments and returns a double.

文章插图
7 Random Number generationThe function rand() computes a sequence of pseudo-random integers in the range zero to RAND_MAX, which is defined in <stdlib.h>. One way to produce random floating-point numbers greater than or equal to zero but less than one is
#define frand() ((double) rand() / (RAND_MAX+1.0))(If your library already provides a function for floating-point random numbers, it is likely to have better statistical properties than this one.)The function srand(unsigned) sets the seed for rand. The portable implementation of rand and srand suggested by the standard appears in Section 2.7.
Exercise 7-9. Functions like isupper can be implemented to save space or to save time. Explore both possibilities.
【C语言标准库的7类函数】
推荐阅读
- 将军峰大元帅,四川洪雅将军乡茶叶农业标准化项目经过验收
- Python GUI编程之Python GUI库综述
- 6个顶级可视化Python库
- 使用 ZeroMQ 消息库在 C 和 Python 间共享数据
- 工行“去O”数据库选型与分布式架构设计
- 天文航天|外国航天员来中国空间站用什么语言交流?专家给出回应
- 中国人最难学的语言 中国最难的语言
- web渗透测试——数据库攻击技巧整理
- PLC编程语言之争:谁才是"一哥"
- Go语言规范你掌握多少?这道题检验一下
