函数声明 | 函数功能 |
---|---|
| 用于向当前进程发送指定的信号。 |
| 用于生成伪随机数 |
| 用于从文件描述符读取数据的函数。 |
| 用于重新分配已经分配过内存的空间大小。 |
| 画一个矩形 |
| 用于将BGI(Borland Graphics Interface)驱动程序注册到系统中 |
| 用于删除指定的文件 |
| 用于重命名或移动文件。 |
| 将图形模式恢复到文本模式 |
| 将文件指针 |
| 用于删除一个空目录,即该目录必须为空。 |
| 将传入的实数参数 |
| 将传入的实数参数 |
| 将传入的实数参数 |
| 用于计算两个浮点数的余数(即模运算结果)(double) |
| 用于计算两个浮点数的余数(即模运算结果)(float) |
| 用于计算两个浮点数的余数(即模运算结果)(long double) |
| 用于计算两个浮点数的余数,并返回商和余数。 |
| 用于计算两个浮点数的余数,并返回商和余数。 |
| 用于计算两个浮点数的余数,并返回商和余数。 |
| 将 x 四舍五入到最接近的整数(double) |
| 将 x 四舍五入到最接近的整数(float) |
| 将 x 四舍五入到最接近的整数(long double) |
函数声明 | 函数功能 |
---|---|
| 用于向当前进程发送指定的信号。 |
参数:
返回值:
raise()
函数将返回 0
;#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void sigint_handler(int sig) {
printf("Caught signal %d\n", sig);
exit(0);
}
int main() {
signal(SIGINT, sigint_handler);
while (1) {
printf("Doing something...\n");
getchar();
// check for interrupt signal
raise(SIGINT);
}
return 0;
}
在上面的示例中,
signal()
函数设置了一个处理 SIGINT
信号的处理程序 sigint_handler()
。注意:
raise()
函数只能向当前进程发送信号,不能向其他进程发送信号。如果要向其他进程发送信号,可以使用kill()
函数。
函数声明 | 函数功能 |
---|---|
| 用于生成伪随机数 |
返回值:
每次调用它时会返回一个介于 0
和 RAND_MAX
之间的伪随机整数。其中,RAND_MAX
是一个常量,表示返回值的最大值,通常为 32767
。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
// 使用系统时间作为随机数种子初始化
srand(time(NULL));
// 生成并输出 10 个随机数
for (int i = 0; i < 10; i++) {
printf("%d\n", rand());
}
return 0;
}
注意:
rand()
函数返回的随机数序列都是相同的。如果要生成不同的随机数序列,可以使用 srand()
函数提供的种子来初始化随机数发生器。rand()
函数只能生成伪随机数,不能保证其真正的随机性。因此,在需要高度安全性的应用程序中,建议使用更加安全的随机数生成器,如 /dev/random
和 /dev/urandom
等系统提供的硬件随机数生成器。函数声明 | 函数功能 |
---|---|
| 用于从文件描述符读取数据的函数。 |
参数:
#include <stdio.h>
#include <unistd.h>
#define BUFFER_SIZE 1024
int main() {
char buffer[BUFFER_SIZE];
ssize_t num_read;
num_read = read(STDIN_FILENO, buffer, BUFFER_SIZE);
if (num_read == -1) {
perror("read");
return 1;
}
printf("Read %ld bytes from standard input: %.*s", num_read, (int)num_read, buffer);
return 0;
}
在上述的示例中,
BUFFER_SIZE
的字符数组 buffer
;read()
函数读取标准输入【STDIN_FILENO
表示标准输入的文件描述符】中的数据到 buffer
中;函数声明 | 函数功能 |
---|---|
| 用于重新分配已经分配过内存的空间大小。 |
参数:
返回值:
ptr
指向的内存区域大小,并返回一个指向新内存起始地址的指针。NULL
。注意: realloc()
函数并不保证原有的内存区域内容会被完全保留。当内存大小增加时,可能会分配新的内存并将原有的数据复制到新内存区域中;当内存大小减小时,则可能截断部分原有的数据。因此,在使用 realloc()
函数时,需要注意备份原有的数据,以免出现数据丢失的情况。
#include <stdio.h>
#include <stdlib.h>
int main() {
// 分配 10 个整型变量的内存空间
int *p = (int*) malloc(10 * sizeof(int));
if (p == NULL) {
printf("内存分配失败\n");
exit(1);
}
// 更改为 20 个整型变量的内存空间
int *q = (int*) realloc(p, 20 * sizeof(int));
if (q == NULL) {
printf("内存分配失败\n");
exit(1);
}
// 输出新的内存地址
printf("原内存地址:%p,新内存地址:%p\n", p, q);
// 释放新分配的内存空间
free(q);
return 0;
}
在上面的示例中,
malloc()
函数分配了 10
个整型变量的内存空间,并判断是否分配成功。realloc()
函数将分配的内存空间大小扩充为 20
个整型变量,并判断是否分配成功。注意: 在使用 realloc()
函数时,应该始终检查返回值,以确保分配内存空间成功,避免因内存不足或其他原因导致程序崩溃。另外,也应该避免过度使用 realloc()
函数,因为频繁地重新分配内存会影响程序性能。
函数声明 | 函数功能 |
---|---|
| 画一个矩形 |
参数:
left, top, right, bottom,它们分别表示矩形左上角和右下角的坐标。
#include <graphics.h>
int main(void)
{
int gdriver = DETECT, gmode;
int left, top, right, bottom;
initgraph(&gdriver, &gmode, "");
left = getmaxx() / 2 - 50;
top = getmaxy() / 2 - 50;
right = getmaxx() / 2 + 50;
bottom = getmaxy() / 2 + 50;
rectangle(left,top,right,bottom);
getch();
closegraph();
return 0;
}
函数声明 | 函数功能 |
---|---|
| 用于将BGI(Borland Graphics Interface)驱动程序注册到系统中 |
注意:
它必须在使用任何 BGI 图形函数之前调用。该函数接受一个指向驱动程序结构的指针作为参数,并返回一个整数值以指示是否成功注册了驱动程序。BGI 驱动程序主要用于支持 Borland C++ 等 IDE 环境下的图形绘制和显示操作,它们通常存储在一个单独的库文件中,例如 graphics.h
头文件需要使用的 BGI driver 位于 libbgi.a
文件中。
#include <graphics.h>
int main()
{
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
registerbgidriver(EGAVGA_driver); // 注册EGAVGA驱动程序
circle(100, 100, 50); // 绘制圆形
getch(); // 等待用户输入
closegraph(); // 关闭图形界面
return 0;
}
函数声明 | 函数功能 |
---|---|
| 用于删除指定的文件 |
参数:
返回值:
返回一个整数表示操作是否成功
0
;#include <stdio.h>
int main()
{
int result;
char filename[] = "example.txt";
result = remove(filename);
if (result == 0)
{
printf("The file %s has been removed.\n", filename);
}
else
{
printf("Error deleting the file %s.\n", filename);
}
return 0;
}
函数声明 | 函数功能 |
---|---|
| 用于重命名或移动文件。 |
参数:
oldname :
指定要更改的文件名newname :
指定新文件名或包含新路径的新文件名返回值:
0
;#include <stdio.h>
int main()
{
char oldname[] = "temp.txt";
char newname[] = "tempnew.txt";
int result;
result = rename(oldname, newname);
if (result == 0)
{
printf("The file has been renamed.\n");
}
else
{
printf("Error renaming the file.\n");
}
return 0;
}
函数声明 | 函数功能 |
---|---|
| 将图形模式恢复到文本模式 |
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int gdriver = DETECT, gmode;
int x, y;
initgraph(&gdriver, &gmode, "");
x = getmaxx() / 2;
y = getmaxy() / 2;
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(x, y, "Press any key to exit graphics:");
getch();
// 将图形模式恢复到文本模式
restorecrtmode();
printf("We're now in text mode.\n");
printf("Press any key to return to graphics mode:");
getch();
// 返回图形模式
setgraphmode(getgraphmode());
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(x, y, "We're back in graphics mode.");
outtextxy(x, y+textheight("W"), "Press any key to halt:");
getch();
closegraph();
return 0;
}
函数声明 | 函数功能 |
---|---|
| 将文件指针 |
#include <stdio.h>
int main() {
FILE *fp = fopen("tempnew.txt", "r");
if (fp == NULL) {
perror("Failed to open file");
return 1;
}
// 读取文件内容
char buffer[1024];
while (fgets(buffer, sizeof(buffer), fp)) {
printf("%s", buffer);
}
printf("\n");
// 将文件指针重置到开头
rewind(fp);
// 再次读取文件内容
while (fgets(buffer, sizeof(buffer), fp)) {
printf("%s", buffer);
}
fclose(fp);
return 0;
}
在上述的示例中,
tempnew.txt
的文件;fgets()
函数从文件中读取文本行,并输出内容;rewind()
函数将文件指针重置到文件开头,并再次读取文件内容并输出;函数声明 | 函数功能 |
---|---|
| 用于删除一个空目录,即该目录必须为空。 |
参数:
返回值:
0
;-1
,并设置 errno
错误码。#include <stdio.h>
#include <stdlib.h>
int main() {
const char *dir_name = "test";
if (mkdir(dir_name) I= 0) {
perror("Failed to create directory");
return 1;
}
//在目录中创建一些文件
FILE *fp1 = fopen("test/file1.txt","w");
FILE *fp2 = fopen("test/file2.txt","w");
fclose(fp1);
fclose(fp2);
//尝试刪除非空目录
if (rmdir(dir name) |= 0) {
perror("Failed to remove directory");
return 1;
}
printf("Directory removed successfullyIn");
return 0;
}
在上述的示例中,
test
的目录;file1.txt
和 file2.txt
;rmdir()
函数尝试删除该目录,但会失败,因为该目录不是空的。注意: 如果要删除非空目录,可以使用上面的 remove()
函数来删除目录及其所有内容。
函数声明 | 函数功能 |
---|---|
| 将传入的实数参数 |
| 将传入的实数参数 |
| 将传入的实数参数 |
#include <math.h>
#include <stdio.h>
int main() {
double x = 3.14159265;
double rounded1 = round(x); // 将 x 四舍五入为整数,结果为 3
double rounded2 = round(x * 100) / 100; // 将 x 精确到小数点后两位,结果为 3.14
printf("rounded1: %lf\n", rounded1);
printf("rounded2: %lf\n", rounded2);
float xf = 2.5;
printf("rountf(%f) = %f\n", xf, roundf(xf)); // 将 xf 四舍五入为整数,结果为 3
long double xL = 2.4;
printf("rountl(%Lf) = %Lf", xL, roundl(xL)); // 将 xL 四舍五入为整数,结果为 2
return 0;
}
函数声明 | 函数功能 |
---|---|
| 用于计算两个浮点数的余数(即模运算结果)(double) |
| 用于计算两个浮点数的余数(即模运算结果)(float) |
| 用于计算两个浮点数的余数(即模运算结果)(long double) |
参数:
返回值: x/y
的余数
#include <stdio.h>
#include <math.h>
int main() {
double x = 10.5, y = 3.2;
printf("remainder(%lf, %lf) = %.20lf\n", x, y, remainder(x, y));
float xf = 10.5f, yf = 3.2f;
printf("remainder(%f, %f) = %.20f\n", xf, yf, remainderf(xf, yf));
long double xL = 10.5L, yL = 3.2L;
printf("remainder(%Lf, %Lf) = %.20Lf\n", xL, yL, remainderl(xL, yL));
return 0;
}
函数声明 | 函数功能 |
---|---|
| 用于计算两个浮点数的余数,并返回商和余数。 |
| 用于计算两个浮点数的余数,并返回商和余数。 |
| 用于计算两个浮点数的余数,并返回商和余数。 |
参数:
NULL
返回值: 返回 x/y
的余数,并通过 quo
指针返回商。
#include <stdio.h>
#include <math.h>
int main() {
int quo;
double x = 10.5, y = 3.2;
double rem = remquo(x, y, &quo);
printf("remquo(%lf, %lf, quo) = %.20lf, quo = %d\n", x, y, rem, quo);
float xf = 10.5f, yf = 3.2f;
float remf = remquof(xf, yf, &quo);
printf("remquof(%f, %f, quo) = %.20f, quo = %d\n", xf, yf, remf, quo);
long double xL = 10.5L, yL = 3.2L;
long double remL = remquol(xL, yL, &quo);
printf("remquol(%Lf, %Lf, quo) = %.20Lf, quo = %d\n", xL, yL, remL, quo);
return 0;
}
函数声明 | 函数功能 |
---|---|
| 将 x 四舍五入到最接近的整数(double) |
| 将 x 四舍五入到最接近的整数(float) |
| 将 x 四舍五入到最接近的整数(long double) |
#include <stdio.h>
#include <math.h>
int main() {
double d = 3.7;
float f = 2.4f;
long double ld = 5.9L;
printf("rint(%f) = %.1f\n", d, rint(d)); // Output: rint(3.700000) = 4.0
printf("rintf(%f) = %.1f\n", f, rintf(f)); // Output: rintf(2.400000) = 2.0
printf("rintl(%Lf) = %.1Lf\n", ld, rintl(ld)); // Output: rintl(5.900000) = 6.0
return 0;
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。