C语言标准库提供了一套丰富的函数,可以帮助开发者完成各种常见任务,从输入输出处理到数学计算、字符串操作、时间处理和通用实用函数。第十二章将详细介绍这些库的功能,帮助您更好地理解和使用C语言标准库。
一、标准输入输出库(stdio.h)
1. 基本输入输出函数
stdio.h
提供了处理标准输入输出的函数,如 printf
、scanf
、fgets
、fputs
等。
(1) printf 和 scanf
printf
用于格式化输出到标准输出(通常是屏幕),而 scanf
用于从标准输入(通常是键盘)读取数据。
#include <stdio.h>
int main() {
int age;
printf("请输入您的年龄: ");
scanf("%d", &age);
printf("您输入的年龄是: %d\n", age);
return 0;
}
# 运行结果:
# 请输入您的年龄: 25
# 您输入的年龄是: 25
2) fgets 和 fputs
fgets
用于从流中读取字符串,fputs
用于将字符串输出到流中。它们通常用于处理文本文件。
#include <stdio.h>
int main() {
char str[100];
printf("请输入一行文字: ");
fgets(str, 100, stdin);
printf("您输入的是: ");
fputs(str, stdout);
return 0;
}
# 运行结果:
# 请输入一行文字: Hello, World!
# 您输入的是: Hello, World!
2. 文件操作
stdio.h
还提供了处理文件的函数,如 fopen
、fclose
、fread
、fwrite
等。
(1) fopen 和 fclose
fopen
用于打开文件,fclose
用于关闭文件。
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}
fprintf(file, "Hello, File!\n");
fclose(file);
return 0;
}
(2) fread 和 fwrite
fread
和 fwrite
用于二进制文件的读取和写入。
#include <stdio.h>
typedef struct {
int id;
char name[20];
} Record;
int main() {
Record r = {1, "Example"};
FILE *file = fopen("record.dat", "wb");
fwrite(&r, sizeof(Record), 1, file);
fclose(file);
return 0;
}
二、字符串操作库(string.h)
string.h
提供了处理字符串的函数,如 strcpy
、strcat
、strlen
、strcmp
等。
1. 字符串复制与连接
(1) strcpy 和 strcat
strcpy
用于将一个字符串复制到另一个字符串,strcat
用于将一个字符串连接到另一个字符串末尾。
#include <stdio.h>
#include <string.h>
int main() {
char src[50] = "Hello, ";
char dest[50] = "World!";
strcpy(dest, src);
strcat(dest, "World!");
printf("%s\n", dest);
return 0;
}
# 运行结果:
# Hello, World!
2. 字符串长度与比较
(1) strlen 和 strcmp
strlen
用于获取字符串长度,strcmp
用于比较两个字符串。
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hello";
char str2[20] = "World";
printf("str1的长度: %lu\n", strlen(str1));
if (strcmp(str1, str2) == 0) {
printf("两个字符串相同\n");
} else {
printf("两个字符串不同\n");
}
return 0;
}
# 运行结果:
# str1的长度: 5
# 两个字符串不同
三、数学库(math.h)
math.h
提供了各种数学函数,如 sqrt
、pow
、sin
、cos
、tan
等。
1. 基本数学运算
(1) sqrt 和 pow
sqrt
用于计算平方根,pow
用于计算乘方。
#include <stdio.h>
#include <math.h>
int main() {
double num = 16.0;
printf("16的平方根是: %.2f\n", sqrt(num));
printf("2的4次方是: %.2f\n", pow(2, 4));
return 0;
}
# 运行结果:
# 16的平方根是: 4.00
# 2的4次方是: 16.00
2. 三角函数
math.h
提供了多种三角函数,如 sin
、cos
、tan
等,用于计算角度的正弦、余弦和正切。
#include <stdio.h>
#include <math.h>
int main() {
double angle = 45.0;
double radians = angle * (M_PI / 180.0);
printf("sin(45) = %.2f\n", sin(radians));
printf("cos(45) = %.2f\n", cos(radians));
printf("tan(45) = %.2f\n", tan(radians));
return 0;
}
# 运行结果:
# sin(45) = 0.71
# cos(45) = 0.71
# tan(45) = 1.00
四、时间处理库(time.h)
time.h
提供了处理时间和日期的函数,如 time
、localtime
、strftime
等。
1. 获取当前时间
(1) time 和 localtime
time
返回当前的时间戳,localtime
将时间戳转换为本地时间。
#include <stdio.h>
#include <time.h>
int main() {
time_t now;
time(&now);
printf("当前时间戳: %ld\n", now);
struct tm *local = localtime(&now);
printf("当前时间: %s", asctime(local));
return 0;
}
# 运行结果:
# 当前时间戳: 1666754454
# 当前时间: Tue Oct 25 10:34:14 2022
2. 格式化时间输出
(1) strftime
strftime
用于将时间格式化为自定义的字符串形式。
#include <stdio.h>
#include <time.h>
int main() {
time_t now;
time(&now);
struct tm *local = localtime(&now);
char buffer[80];
strftime(buffer, 80, "现在是 %Y-%m-%d %H:%M:%S", local);
printf("%s\n", buffer);
return 0;
}
# 运行结果:
# 现在是 2022-10-25 10:34:14
五、标准实用函数库(stdlib.h)
stdlib.h
提供了一些通用的实用函数,如内存分配、随机数生成、进程控制等。
1. 动态内存分配
(1) malloc 和 free
malloc
用于动态分配内存,free
用于释放已分配的内存。
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr = (int *)malloc(5 * sizeof(int));
if (arr == NULL) {
printf("内存分配失败\n");
return 1;
}
for (int i = 0; i < 5; i++) {
arr[i] = i * i;
}
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr);
return 0;
}
# 运行结果:
# 0 1 4 9 16
2. 随机数生成
(1) rand 和 srand
rand
用于生成随机数,srand
用于设置随机数生成的种子。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(0));
for (int i = 0; i < 5; i++) {
printf("%d ", rand());
}
printf("\n");
return 0;
}
# 运行结果:
# 生成一组随机数,例如: 1804289383 846930886 1681692777 1714636915 1957747793
3. 字符串转换为数字
(1) atoi 和 atof
atoi
用于将字符串转换为整数,atof
用于将字符串转换为浮点数。
#include <stdio.h>
#include <stdlib.h>
int main() {
char str1[] = "123";
char str2[] = "45.67";
int num1 = atoi(str1);
double num2 = atof(str2);
printf("整数: %d\n", num1);
printf("浮点数: %.2f\n", num2);
return 0;
}
# 运行结果:
# 整数: 123
# 浮点数: 45.67
总结
C语言标准库是C语言强大功能的重要组成部分,它为开发者提供了各种实用的工具函数,涵盖了输入输出、字符串操作、数学计算、时间处理和通用实用函数等方面。通过合理利用这些库函数,开发者可以显著提高代码的效率、可读性和可维护性。
无论是在处理复杂的数学计算、字符串操作,还是在管理时间、内存或生成随机数时,C标准库中的这些功能都能帮助我们更简洁、高效地完成任务。了解并熟练使用这些标准库函数,将使您的C语言编程更加得心应手。