1. C语言常用函数汇总表(概念功能)
以下是每个函数的概念功能和使用,按类别分类并以表格表示。
1.1 输入/输出函数(<stdio.h>
)
函数名 |
概念功能 |
使用示例 |
printf |
用于格式化输出数据到标准输出设备(通常是屏幕)。支持多种格式说明符,用于输出字符串、整数、浮点数等。 |
printf("Hello, World! %d\n", 2024); |
scanf |
从标准输入设备(通常是键盘)读取格式化数据。支持多种格式说明符,用于输入整数、浮点数、字符等。 |
scanf("%d", &num); |
puts |
将字符串输出到标准输出设备,并在末尾自动添加换行符。 |
puts("Hello, World!"); |
getchar |
从标准输入读取一个字符,常用于获取用户输入的单个字符。 |
char c = getchar(); |
putchar |
将一个字符输出到标准输出设备。 |
putchar('A'); |
1.2 字符串操作函数(<string.h>
)
函数名 |
概念功能 |
使用示例 |
strcpy |
将源字符串复制到目标字符串。目标字符串必须有足够的空间。 |
strcpy(dest, src); |
strncpy |
将源字符串的前n个字符复制到目标字符串。目标字符串必须有足够的空间。 |
strncpy(dest, src, 5); |
strcat |
将源字符串连接到目标字符串的末尾。 |
strcat(dest, src); |
strlen |
返回字符串的长度,不包括空字符\0 。 |
size_t len = strlen(str); |
strcmp |
比较两个字符串,返回负值、零或正值,分别表示前者小于、等于或大于后者。 |
if (strcmp(str1, str2) == 0) { ... } |
strstr |
查找字符串中第一次出现的子串,返回指向该子串的指针。 |
char *pos = strstr(str, "World"); |
1.3 内存管理函数(<stdlib.h>
)
函数名 |
概念功能 |
使用示例 |
malloc |
动态分配指定字节数的内存块,返回指向该内存的指针。 |
int *arr = (int *)malloc(5 * sizeof(int)); |
calloc |
动态分配内存并初始化为零,适用于数组。 |
int *arr = (int *)calloc(5, sizeof(int)); |
realloc |
调整已分配内存块的大小,可能移动内存块。 |
arr = (int *)realloc(arr, 10 * sizeof(int)); |
free |
释放之前使用malloc 、calloc 或realloc 分配的内存。 |
free(arr); |
1.4 数学函数(<math.h>
)
函数名 |
概念功能 |
使用示例 |
pow |
计算一个数的指定幂次,返回结果。 |
double result = pow(2.0, 3.0); |
sqrt |
计算平方根,返回结果。 |
double root = sqrt(16.0); |
sin |
计算弧度的正弦值,返回结果。 |
double s = sin(3.14159 / 2); |
cos |
计算弧度的余弦值,返回结果。 |
double c = cos(0.0); |
tan |
计算弧度的正切值,返回结果。 |
double t = tan(3.14159 / 4); |
log |
计算自然对数,返回结果。 |
double ln = log(2.71828); |
1.5 时间函数(<time.h>
)
函数名 |
概念功能 |
使用示例 |
time |
返回自1970年1月1日以来的秒数(Unix时间戳)。如果参数不为NULL,则同时将值存储在参数指针指向的变量中。 |
time_t now = time(NULL); |
difftime |
返回两个时间点之间的时间差,以秒为单位。 |
double diff = difftime(time2, time1); |
clock |
返回程序执行时间,以时钟周期为单位。常用于测量程序运行时间。 |
clock_t start = clock(); |
strftime |
根据指定的格式将时间转换为字符串,常用于格式化输出时间。 |
strftime(buf, 100, "%Y-%m-%d", timeinfo); |
1.6 文件操作函数(<stdio.h>
)
函数名 |
概念功能 |
使用示例 |
fopen |
打开文件并返回文件指针,支持多种模式(如读、写、追加等)。 |
FILE *fp = fopen("file.txt", "r"); |
fclose |
关闭文件,释放相关资源。 |
fclose(fp); |
fread |
从文件读取数据到内存中,常用于二进制文件读取。 |
fread(buffer, sizeof(char), 100, fp); |
fwrite |
将内存中的数据写入文件,常用于二进制文件写入。 |
fwrite(data, sizeof(char), 100, fp); |
fscanf |
从文件读取格式化数据,类似于scanf ,但从文件读取而不是标准输入。 |
fscanf(fp, "%d", &num); |
fprintf |
向文件写入格式化数据,类似于printf ,但输出到文件而不是标准输出。 |
fprintf(fp, "Value: %d\n", num); |
1.7 布尔类型及相关函数(<stdbool.h>
)
函数名 |
概念功能 |
使用示例 |
bool |
定义布尔类型,bool 是_Bool 的别名,用于表示真值和假值。 |
bool isEven = (num % 2 == 0); |
true |
表示真,布尔类型的常量,值为1 。 |
if (isEven == true) { printf("Even number.\n"); } |
false |
表示假,布尔类型的常量,值为0 。 |
if (isEven == false) { printf("Odd number.\n"); } |
1.8 其他常用函数
函数名 |
概念功能 |
使用示例 |
#define |
宏定义,用于定义常量或宏函数,在编译时进行替换。 |
#define PI 3.14159 |
typedef |
为现有类型定义新的名称,常用于简化复杂类型声明。 |
typedef unsigned long ulong; |
enum |
定义枚举类型,用于表示一组相关的常量。 |
enum Color { RED, GREEN, BLUE }; |
struct |
定义结构体,用于聚合不同类型的变量。 |
struct Point { int x; int y; }; |
sizeof |
返回类型或变量的大小(以字节为单位)。 |
size_t size = sizeof(int); |
typecast |
类型转换,用于将一种数据类型转换为另一种。 |
double num = (double)intVar; |
通过这些表格和示例,你可以掌握C语言中各类常用函数的功能和使用方法。如果你需要进一步深入了解某个函数或需要更多示例,随时告诉我!
2. C语言常用函数汇总表(标准格式)
以下是按类别分类的C语言常用函数汇总表,包含所属头文件、函数的标准格式及简单的示例代码。表格之后的示例代码综合展示了这些函数的使用,并包含了详细的注释。
2.1 输入/输出函数(<stdio.h>
)
所属头文件 |
函数名 |
标准格式 |
示例代码 |
<stdio.h> |
printf |
int printf(const char *format, ...); |
printf("Hello, World!\n"); |
|
scanf |
int scanf(const char *format, ...); |
scanf("%d", &num); |
|
puts |
int puts(const char *str); |
puts("Hello, World!"); |
|
getchar |
int getchar(void); |
char c = getchar(); |
|
putchar |
int putchar(int char); |
putchar('A'); |
2.2 字符串操作函数(<string.h>
)
所属头文件 |
函数名 |
标准格式 |
示例代码 |
<string.h> |
strcpy |
char *strcpy(char *dest, const char *src); |
strcpy(dest, src); |
|
strncpy |
char *strncpy(char *dest, const char *src, size_t n); |
strncpy(dest, src, 5); |
|
strcat |
char *strcat(char *dest, const char *src); |
strcat(dest, src); |
|
strlen |
size_t strlen(const char *str); |
size_t len = strlen(str); |
|
strcmp |
int strcmp(const char *str1, const char *str2); |
if (strcmp(str1, str2) == 0) { ... } |
|
strstr |
char *strstr(const char *haystack, const char *needle); |
char *pos = strstr(str, "World"); |
2.3 内存管理函数(<stdlib.h>
)
所属头文件 |
函数名 |
标准格式 |
示例代码 |
<stdlib.h> |
malloc |
void *malloc(size_t size); |
int *arr = (int *)malloc(5 * sizeof(int)); |
|
calloc |
void *calloc(size_t nmemb, size_t size); |
int *arr = (int *)calloc(5, sizeof(int)); |
|
realloc |
void *realloc(void *ptr, size_t size); |
arr = (int *)realloc(arr, 10 * sizeof(int)); |
|
free |
void free(void *ptr); |
free(arr); |
2.4 数学函数(<math.h>
)
所属头文件 |
函数名 |
标准格式 |
示例代码 |
<math.h> |
pow |
double pow(double base, double exponent); |
double result = pow(2.0, 3.0); |
|
sqrt |
double sqrt(double x); |
double root = sqrt(16.0); |
|
sin |
double sin(double x); |
double s = sin(3.14159 / 2); |
|
cos |
double cos(double x); |
double c = cos(0.0); |
|
tan |
double tan(double x); |
double t = tan(3.14159 / 4); |
|
log |
double log(double x); |
double ln = log(2.71828); |
2.5 时间函数(<time.h>
)
所属头文件 |
函数名 |
标准格式 |
示例代码 |
<time.h> |
time |
time_t time(time_t *tloc); |
time_t now = time(NULL); |
|
difftime |
double difftime(time_t end, time_t start); |
double diff = difftime(t2, t1); |
|
clock |
clock_t clock(void); |
clock_t start = clock(); |
|
strftime |
size_t strftime(char *s, size_t max, const char *format, const struct tm *tm); |
strftime(buf, 100, "%Y-%m-%d", timeinfo); |
2.6 文件操作函数(<stdio.h>
)
所属头文件 |
函数名 |
标准格式 |
示例代码 |
<stdio.h> |
fopen |
FILE *fopen(const char *filename, const char *mode); |
FILE *fp = fopen("file.txt", "r"); |
|
fclose |
int fclose(FILE *stream); |
fclose(fp); |
|
fread |
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); |
fread(buffer, sizeof(char), 100, fp); |
|
fwrite |
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); |
fwrite(data, sizeof(char), 100, fp); |
|
fscanf |
int fscanf(FILE *stream, const char *format, ...); |
fscanf(fp, "%d", &num); |
|
fprintf |
int fprintf(FILE *stream, const char *format, ...); |
fprintf(fp, "Value: %d\n", num); |
2.7 布尔类型及相关函数(<stdbool.h>
)
所属头文件 |
函数名 |
标准格式 |
示例代码 |
<stdbool.h> |
bool |
typedef _Bool bool; |
bool isEven = (num % 2 == 0); |
|
true |
#define true 1 |
if (isEven == true) { printf("Even number.\n"); } |
|
false |
#define false 0 |
if (isEven == false) { printf("Odd number.\n"); } |
2.8 综合示例代码
以下示例代码综合使用了C语言的常用函数和布尔类型,并包含了详细的注释。代码最后还包括输出结果。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <stdbool.h>
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
printf("You entered: %d\n", num);
bool isEven = (num % 2 == 0);
if (isEven) {
printf("%d is an even number.\n", num);
} else {
printf("%d is an odd number.\n", num);
}
char str1[20], str2[20] = "Hello, World!";
strcpy(str1, str2);
printf("str1: %s\n", str1);
int *arr = (int *)malloc(5 * sizeof(int));
if (arr != NULL) {
for (int i = 0; i < 5; i++) {
arr[i] = i + 1;
}
printf("Array contents: ");
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr);
} else {
printf("Memory allocation failed!\n");
}
double result = pow(2.0, 3.0);
printf("2^3 = %.2f\n", result);
time_t now = time(NULL);
printf("Current time: %s", ctime(&now));
return 0;
}
2.8.1 输出结果
假设用户输入的数字为7
,则输出结果如下:
Enter a number: 7
You entered: 7
7 is an odd number.
str1: Hello, World!
Array contents: 1 2 3 4 5
2^3 = 8.00
Current time: Tue Aug 13 12:34:56 2024
2.8.2 代码说明
- 输入/输出示例:使用
printf
输出提示信息,使用scanf
获取用户输入,并使用printf
再次输出结果。
- 布尔类型判断:使用
<stdbool.h>
中的bool
类型判断输入数字是奇数还是偶数,并使用true
和false
分别进行逻辑判断。
- 字符串操作:使用
strcpy
函数将一个字符串复制到另一个字符串,并输出结果。
- 内存管理:使用
malloc
动态分配内存,初始化分配的数组,并输出数组内容,最后释放内存。
- 数学函数:使用
pow
函数计算2的3次幂,并格式化输出结果。
- 时间函数:使用
time
函数获取当前时间,并使用ctime
将时间转换为可读格式输出。
这段代码演示了如何在C语言中使用多种常用函数和布尔类型。通过这些示例,您可以更好地理解C语言的基本功能和标准库函数的用法。
3. 结束语
- 本节内容已经全部介绍完毕,希望通过这篇文章,大家对C语言中常用函数有了更深入的理解和认识。
- 感谢各位的阅读和支持,如果觉得这篇文章对你有帮助,请不要吝惜你的点赞和评论,这对我们非常重要。再次感谢大家的关注和支持!