C语言教学-函数篇
本文最后更新于 214 天前,其中的信息可能已经有所发展或是发生改变。

函数是一段可以重复执行的代码。它可以接受不同的参数,完成对应的操作。下面的例子就是一个函数。

int plus_one(int n) {
  return n + 1;
}

函数的主要内容在初识里面我就已经说的比较详细了。本文介绍一下常用的函数。1.1 和1.2用的最多


C语言常用函数整理

输入/输出函数()

函数名概念功能使用示例
printf格式化输出数据到标准输出设备(通常是屏幕)。printf("Hello, World! %d\n", 2024);
scanf从标准输入读取格式化数据。scanf("%d", &num);
puts输出字符串到标准输出,并自动添加换行符。puts("Hello, World!");
getchar从标准输入读取一个字符。char c = getchar();
putchar输出一个字符到标准输出。putchar('A');

字符串操作函数()

函数名概念功能使用示例
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");

内存管理函数()

函数名概念功能使用示例
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释放之前分配的内存。free(arr);

数学函数()

函数名概念功能使用示例
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);

时间函数()

函数名概念功能使用示例
time返回自1970年1月1日以来的秒数(Unix时间戳)。time_t now = time(NULL);
difftime返回两个时间点之间的时间差(秒)。double diff = difftime(time2, time1);
clock返回程序执行时间(时钟周期)。clock_t start = clock();
strftime将时间转换为字符串。strftime(buf, 100, "%Y-%m-%d", timeinfo);

文件操作函数()

函数名概念功能使用示例
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从文件读取格式化数据。fscanf(fp, "%d", &num);
fprintf向文件写入格式化数据。fprintf(fp, "Value: %d\n", num);

布尔类型及相关函数()

函数名概念功能使用示例
bool定义布尔类型。bool isEven = (num % 2 == 0);
true表示真(值为1)。if (isEven == true) { printf("Even number.\n"); }
false表示假(值为0)。if (isEven == false) { printf("Odd number.\n"); }

其他常用函数

函数名概念功能使用示例
#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;

printf()

printf()的作用是将参数文本输出到屏幕。它名字里面的f代表format(格式化),表示可以定制输出文本的格式。

printf("Hello World");

上面命令会在屏幕上输出一行文字“Hello World”。

printf()不会在行尾自动添加换行符,运行结束后,光标就停留在输出结束的地方,不会自动换行。为了让光标移到下一行的开头,可以在输出文本的结尾,添加一个换行符\n

printf("Hello World\n");

占位符

printf()可以在输出文本中指定占位符。所谓“占位符”,就是这个位置可以用其他值代入。

// 输出 There are 3 apples
printf("There are %i apples\n", 3);

面示例中,There are %i apples\n是输出文本,里面的%i就是占位符,表示这个位置要用其他值来替换。占位符的第一个字符一律为百分号%,第二个字符表示占位符的类型,%i表示这里代入的值必须是一个整数。

printf()的第二个参数就是替换占位符的值,上面的例子是整数3替换%i。执行后的输出结果就是There are 3 apples

printf()的占位符有许多种类,与 C 语言的数据类型相对应。下面按照字母顺序,列出常用的占位符,方便查找。

  • %a:十六进制浮点数,字母输出为小写。
  • %A:十六进制浮点数,字母输出为大写。
  • %c:字符。
  • %d:十进制整数。
  • %e:使用科学计数法的浮点数,指数部分的e为小写。
  • %E:使用科学计数法的浮点数,指数部分的E为大写。
  • %i:整数,基本等同于%d
  • %f:小数(包含float类型和double类型)。
  • %g:6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的e为小写。
  • %G:等同于%g,唯一的区别是指数部分的E为大写。
  • %hd:十进制 short int 类型。
  • %ho:八进制 short int 类型。
  • %hx:十六进制 short int 类型。
  • %hu:unsigned short int 类型。
  • %ld:十进制 long int 类型。
  • %lo:八进制 long int 类型。
  • %lx:十六进制 long int 类型。
  • %lu:unsigned long int 类型。
  • %lld:十进制 long long int 类型。
  • %llo:八进制 long long int 类型。
  • %llx:十六进制 long long int 类型。
  • %llu:unsigned long long int 类型。
  • %Le:科学计数法表示的 long double 类型浮点数。
  • %Lf:long double 类型浮点数。
  • %n:已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。
  • %o:八进制整数。
  • %p:指针。
  • %s:字符串。
  • %u:无符号整数(unsigned int)。
  • %x:十六进制整数。
  • %zdsize_t类型。
  • %%:输出一个百分号。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇