C 语言:C 标准库 - <time.h>
<time.h> 是 C 标准库中的头文件,提供了一系列函数和类型,用于处理日期和时间。以下是 <time.h> 中一些常见的函数和类型:1. 时间获取函数: - time 函数:获取当前的系统时间(自 1970 年 1 月 1 日以来的秒数)。 #include <time.h> int main() { time_t current_time; time(&current_time); return 0; }2. 时间转换函数: - ctime 函数:将 time_t 类型的时间转换为字符串表示。 - gmtime 和 localtime 函数:将 time_t 类型的时间转换为 struct tm 结构体,分别表示协调世界时(UTC)和本地时间。 #include <time.h> int main() { time_t current_time; struct tm *time_info; ti...
C 语言:C 标准库 - <string.h>
<string.h> 是 C 标准库中的头文件,提供了一系列用于处理字符串的函数和宏。以下是 <string.h> 中一些常见的函数和宏:1. 字符串复制和连接: - strcpy 函数:将一个字符串复制到另一个字符串。 - strncpy 函数:将指定数量的字符从一个字符串复制到另一个字符串。 - strcat 函数:将一个字符串连接到另一个字符串。 - strncat 函数:将指定数量的字符从一个字符串连接到另一个字符串。 #include <string.h> int main() { char dest[20]; char src[] = "Hello, "; strcpy(dest, src); strcat(dest, "World!"); return 0; }2. 字符串比较: - strcmp 函数:比较两个字符串。 - strncmp 函数:比较两个字符串的前 N 个字符。 ...
C 语言:C 标准库 - <stdlib.h>
<stdlib.h> 是 C 标准库中的头文件,提供了一组常用的函数,用于执行各种操作,例如内存分配、随机数生成、字符串转换等。以下是 <stdlib.h> 中一些常见的函数和宏:1. 内存分配和释放: - malloc 函数:分配指定字节数的内存。 - calloc 函数:分配指定数量和大小的内存块,并将内容初始化为零。 - realloc 函数:重新分配已分配的内存块的大小。 - free 函数:释放先前分配的内存块。 #include <stdlib.h> int main() { int *arr = (int *)malloc(5 * sizeof(int)); // Perform operations on the allocated memory free(arr); // Don't forget to free the allocated memory return 0; }2. 随机数生成: - rand 函数:生成伪随机数。 ...
C 语言:C 标准库 - <stdio.h>
<stdio.h> 是 C 标准库中的头文件,提供了一组用于输入和输出的函数和宏。以下是 <stdio.h> 中一些常见的函数和宏:1. 文件操作: - FILE 类型:表示文件流的数据类型。 - fopen 函数:打开文件,返回文件指针。 - fclose 函数:关闭文件。 - fprintf 函数:按照指定格式写入数据到文件。 - fscanf 函数:按照指定格式从文件读取数据。 #include <stdio.h> int main() { FILE *file = fopen("example.txt", "w"); fprintf(file, "Hello, World!\n"); fclose(file); return 0; }2. 标准输入输出: - printf 函数:按照指定格式输出数据到标准输出。 - scanf 函数:按照指定格式从标准输入读取数据。 #incl...
C 语言:C 标准库 - <stddef.h>
<stddef.h> 是 C 标准库中的一个头文件,提供了一些与指针和偏移量相关的类型和宏。这个头文件定义了 NULL 指针和 size_t 类型,以及一些与指针运算相关的宏。以下是一些常见的元素:1. NULL 宏: - NULL 是一个宏,用于表示空指针常量。通常被用来初始化指针变量,表示该指针不指向任何有效的内存地址。 #include <stddef.h> int *ptr = NULL;2. size_t 类型: - size_t 是一种无符号整数类型,通常用于表示内存块的大小、数组的索引和对象的大小。 #include <stddef.h> size_t array_size = 10;3. offsetof 宏: - offsetof 宏用于计算结构体中成员的偏移量(以字节为单位)。它接受两个参数,第一个是结构体类型,第二个是结构体中的成员名。 #include <stddef.h> struct Example { int x; ...
C 语言:C 标准库 - <stdarg.h>
<stdarg.h> 是 C 标准库中的一个头文件,用于支持可变参数函数。可变参数函数是一种可以接受不定数量参数的函数。<stdarg.h> 提供了一组宏和函数,用于在函数内部访问可变数量的参数。以下是一些 <stdarg.h> 中常用的宏和函数:1. va_list类型: - va_list 是一个用于存储可变参数信息的类型。通常,它被声明为指向某种类型的指针。2. va_start宏: - void va_start(va_list ap, last_param); - va_start 宏用于初始化 va_list,使其指向可变参数列表中的第一个参数。3. va_arg宏: - type va_arg(va_list ap, type); - va_arg 宏用于访问可变参数列表中的下一个参数,并将参数的类型作为参数传递给它。4. va_end宏: - void va_end(va_list ap); - va_end 宏用于清理 va_list,确保在函数返回之前释放所有相关资源。下面是一个简单的例子,演示如何使用...
C 语言:C 标准库 - <signal.h>
<signal.h> 是C语言标准库中的头文件,用于处理程序中与信号相关的操作。信号是一种在计算机程序中处理异步事件的方式,例如中断或错误。以下是 <signal.h> 中一些常见的函数和宏:信号处理函数1. signal 函数 #include <signal.h> void (*signal(int signum, void (*handler)(int)))(int); 该函数用于设置信号处理函数。signum 参数指定信号的类型,handler 参数指定了相应信号的处理函数。返回之前注册的信号处理函数。预定义的信号常量1. SIGINT, SIGTERM, SIGSEGV 等 这些常量表示不同的信号类型,如中断、终止、段错误等。详细的信号类型可以查看系统的 <signal.h> 头文件。示例以下是一个简单的示例,演示了如何使用 <signal.h> 中的函数处理 SIGINT 信号(在用户按下 Ctrl+C 时发送):#include <stdio.h>#include <signal...
C 语言:C 标准库 - <setjmp.h>
<setjmp.h> 是C语言标准库中的头文件,提供了一种非局部跳转的机制。它允许在程序执行期间设置一个“跳转点”,在稍后的某个时间跳转回该点,通常是用于处理错误或异常情况。<setjmp.h> 中的主要函数是 setjmp 和 longjmp。setjmp 函数#include <setjmp.h>int setjmp(jmp_buf env);setjmp 函数用于在程序中设置一个跳转点,并将当前程序状态保存到 env 中。它通常与 if 语句一起使用,用于检测程序是否从 longjmp 函数跳回。longjmp 函数#include <setjmp.h>void longjmp(jmp_buf env, int val);longjmp 函数用于跳转回之前通过 setjmp 设置的跳转点。env 参数包含了在 setjmp 中保存的程序状态,而 val 参数是传递给 setjmp 的返回值。示例以下是一个简单的示例,演示了如何使用 setjmp 和 longjmp 处理错误情况:#include <stdio.h>#in...
C 语言:C 标准库 - <math.h>
<math.h> 是C语言标准库中的头文件,提供了数学运算相关的函数和宏。以下是 <math.h> 中一些常见的函数和宏:基本数学运算1. 数学函数 #include <math.h> double sin(double x); double cos(double x); double tan(double x); double exp(double x); double log(double x); double log10(double x); double sqrt(double x); 这些函数分别计算正弦、余弦、正切、指数、自然对数、常用对数和平方根。2. 幂运算 #include <math.h> double pow(double x, double y); 计算 x 的 y 次方。3. 取整函数 #include <math.h> double ceil(double x); double floor(double x); double round...
C 语言:C 标准库 - <locale.h>
<locale.h> 是C语言标准库中的头文件,用于处理与本地化(国际化)相关的函数。它提供了一些函数和设置,使得程序可以根据特定的语言和文化习惯来处理字符分类、日期、时间、货币和其他方面的信息。以下是 <locale.h> 中一些常见的函数和宏:设置本地化信息1. setlocale 函数 #include <locale.h> char *setlocale(int category, const char *locale); 该函数用于设置或查询程序的本地化信息。category 参数指定了设置或查询的本地化信息的类型,locale 参数指定了所需的区域设置。通常,category 可以是 LC_ALL(所有本地化信息)或其他具体的 LC_* 值。字符分类1. isalpha, isdigit, islower, isupper 等字符分类函数 #include <locale.h> #include <ctype.h> int isalpha(int c); int isdigit(int ...
C 语言:C 标准库 - <limits.h>
<limits.h> 是C语言标准库中的头文件,定义了整数数据类型的一些特性,如取值范围和位数。以下是 <limits.h> 中一些常见的宏:整数类型取值范围1. CHAR_BIT 表示一个字节中的比特数。2. SCHAR_MIN, SCHAR_MAX 表示 signed char 类型的最小和最大值。3. UCHAR_MAX 表示 unsigned char 类型的最大值。4. CHAR_MIN, CHAR_MAX 表示 char 类型的最小和最大值,可以是 signed 或 unsigned。5. SHRT_MIN, SHRT_MAX 表示 short 类型的最小和最大值。6. USHRT_MAX 表示 unsigned short 类型的最大值。7. INT_MIN, INT_MAX 表示 int 类型的最小和最大值。8. UINT_MAX 表示 unsigned int 类型的最大值。9. LONG_MIN, LONG_MAX 表示 long 类型的最小和最大值。10. ULONG_MAX 表示 unsigned...
C 语言:C 标准库 - <float.h>
<float.h> 是C语言标准库中的头文件,定义了浮点数运算的一些特性,如浮点数的取值范围、精度和舍入方式等。以下是 <float.h> 中一些常见的宏:浮点数常数1. FLT_RADIX 表示浮点数的基数(通常为2)。2. FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON 表示浮点数的相对精度,即1与下一个可表示的浮点数之间的差值。3. FLT_MIN, DBL_MIN, LDBL_MIN 表示浮点数的最小正子规格值(正的最小非零浮点数)。4. FLT_MAX, DBL_MAX, LDBL_MAX 表示浮点数的最大有限值。浮点数属性1. FLT_DIG, DBL_DIG, LDBL_DIG 表示十进制中的有效数字位数。2. FLT_MANT_DIG, DBL_MANT_DIG, LDBL_MANT_DIG 表示浮点数的尾数位数。3. FLT_MIN_EXP, DBL_MIN_EXP, LDBL_MIN_EXP 表示浮点数的最小负指数。4. FLT_MIN_10_EXP, DBL_MIN_10_EXP, ...
C 语言:C 标准库 - <errno.h>
<errno.h> 是C语言标准库中的头文件,定义了一些宏和全局变量,用于处理错误情况。这些错误代码通常由标准库函数设置,以指示函数调用失败的原因。以下是 <errno.h> 中一些常见的宏和全局变量:errno 全局变量#include <errno.h>extern int errno;errno 是一个全局变量,用于存储最近一次发生的错误代码。在标准库函数调用失败时,可以检查 errno 的值以确定错误的原因。perror 函数#include <stdio.h>void perror(const char *s);perror 函数用于将最近一次发生的错误信息输出到标准错误流,并在错误信息前加上用户提供的字符串 s。strerror 函数#include <string.h>char *strerror(int errnum);strerror 函数将错误代码 errnum 转换为相应的错误消息字符串,并返回这个字符串的指针。示例#include <stdio.h>#include <errno.h&...
C 语言:C 标准库 - <ctype.h>
<ctype.h> 是C语言标准库中的一个头文件,提供了一系列用于对字符进行分类和转换的函数。这些函数对于处理字符数据非常有用,例如判断字符的类型、将字符转换为大写或小写等操作。以下是一些 <ctype.h> 中常用的函数:字符分类函数1. isalpha(int c) 判断字符是否是字母(a-z、A-Z)。 #include <ctype.h> int isalpha(int c);2. isdigit(int c) 判断字符是否是数字(0-9)。 #include <ctype.h> int isdigit(int c);3. isalnum(int c) 判断字符是否是字母或数字。 #include <ctype.h> int isalnum(int c);4. islower(int c), isupper(int c) 判断字符是否是小写或大写字母。 #include <ctype.h> int islower(int c); int isupper(i...
C 语言:C 标准库 - <assert.h>
<assert.h> 是C语言标准库中的一个头文件,它提供了一个宏 assert,用于在程序中插入调试断言。断言是一种声明,用于指定某个条件应该为真。如果条件为假,则断言将导致程序终止,并输出错误信息。assert 宏#include <assert.h>void assert(int expression); 参数: expression 是一个标量表达式,通常是一个逻辑条件。如果该条件为假(即0),assert 将输出错误消息并终止程序执行。示例#include <stdio.h>#include <assert.h>int divide(int a, int b) { // 断言:除数不能为零 assert(b != 0); return a / b;}int main() { int result = divide(10, 2); printf("Result: %d\n", result); // 尝试除以零,触发断言 result = divide(5, 0); ...
C 语言:C 标准库 - 参考手册
C语言标准库是C语言提供的一组头文件和函数库,包含了各种常用的函数和宏,用于执行诸如输入输出、字符串操作、内存管理、数学计算等任务。以下是一些C语言标准库中常用的头文件和函数的参考手册:头文件1. stdio.h - 标准输入输出 int printf(const char *format, ...); int scanf(const char *format, ...); FILE *fopen(const char *filename, const char *mode); int fclose(FILE *stream);2. stdlib.h - 标准库函数 void *malloc(size_t size); void free(void *ptr); int rand(void);3. string.h - 字符串处理 char *strcpy(char *dest, const char *src); size_t strlen(const char *str); int strcmp(const char *str1, const...
C 语言:C 经典100例
"C语言经典100例"通常是指一系列经典的C语言编程题目,用于帮助程序员提高编程能力。这些题目覆盖了C语言的各个方面,涉及基本语法、数组、字符串、指针、文件操作等多个主题。以下是一个简单的例子,展示了C语言经典100例中的一道题目:/*题目:输入某年某月某日,判断这一天是这一年的第几天?*/#include <stdio.h>int daysOfMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);}int calculateDays(int year, int month, int day) { int days = 0; for (int i = 1; i < month; i++) { days += daysOfMonth[i]; } ...
C 语言实例
当涉及到C语言的实例时,这可能包括各种不同的应用领域和问题。以下是一个简单的C语言实例,演示了一个基本的控制台应用程序,该程序接受用户输入的两个整数并计算它们的和:#include <stdio.h>int main() { int num1, num2; // 获取用户输入 printf("Enter the first number: "); scanf("%d", &num1); printf("Enter the second number: "); scanf("%d", &num2); // 计算和并输出结果 int sum = num1 + num2; printf("Sum: %d\n", sum); return 0;}这个简单的程序演示了用户输入、变量声明、计算和输出的基本概念。用户被要求输入两个整数,程序将这两个整数相加并打印结果。请注意,这只是一个基本的示例。实际上,C语言可以...
C 语言:C 排序算法
C语言中有多种排序算法,每种算法都有其优劣点,选择合适的排序算法取决于特定问题的要求和数据的规模。以下是一些常见的排序算法:1. 冒泡排序(Bubble Sort)冒泡排序是一种简单的排序算法,它多次遍历数组,比较相邻的元素,并将不符合顺序的相邻元素交换。void bubbleSort(int arr[], int n) { for (int i = 0; i < n-1; i++) { for (int j = 0; j < n-i-1; j++) { if (arr[j] > arr[j+1]) { // 交换 arr[j] 和 arr[j+1] int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } }}2. 选择排序(Selection Sort)选择排序是一种不稳定的排序算法,它通过多次遍历数组,...
C 语言:C 命令行参数
C语言中,可以通过命令行参数向程序传递信息。主函数 main 可以接受两个参数,分别是命令行参数的数量(argc)和参数的字符串数组(argv)。以下是一个简单的例子:#include <stdio.h>int main(int argc, char *argv[]) { // argc 表示命令行参数的数量 // argv 是一个指向字符串数组的指针,每个字符串是一个命令行参数 printf("Number of command-line arguments: %d\n", argc); // 打印每个命令行参数 for (int i = 0; i < argc; i++) { printf("Argument %d: %s\n", i, argv[i]); } return 0;}编译这个程序并在命令行运行时,可以传递一些参数:./program arg1 arg2 arg3程序将输出:Number of command-line arguments: 4Argumen...