C 语言中 stdlib.h中可用的接口

1.动态内存分配函数
void *malloc(size_t size):从堆中分配一块大小为size字节的内存,并返回指向该内存块的指针。如果分配失败,返回NULL。
void *calloc(size_t num, size_t size):从堆中分配num个大小为size字节的连续内存块,并将每个字节初始化为0。如果分配失败,返回NULL。
void *realloc(void *ptr, size_t size):将指针ptr指向的内存块大小重新分配为size字节,并返回指向新的内存块的指针。如果分配失败,返回NULL。如果ptr为NULL,等效于调用malloc(size)。
void free(void *ptr):释放指针ptr指向的内存块。

2.随机数生成函数
int rand(void):生成一个0到RAND_MAX(通常为32767)之间的伪随机整数。
void srand(unsigned int seed):使用seed作为随机数生成器的种子。通常使用当前时间作为种子,可以通过调用time函数来获取当前时间。

3.字符串转换函数
int atoi(const char *str):将字符串str转换为整型数。
long int atol(const char *str):将字符串str转换为长整型数。
double atof(const char *str):将字符串str转换为双精度浮点数。
long int strtol(const char *str, char **endptr, int base):将字符串str转换为长整型数,endptr指向str中第一个不能转换的字符。base指定进制,可以为2-36或0。如果base为0,将根据str的前缀自动判断进制。
double strtod(const char *str, char **endptr):将字符串str转换为双精度浮点数,endptr指向str中第一个不能转换的字符。
unsigned long int strtoul(const char *str, char **endptr, int base):将字符串str转换为无符号长整型数,endptr指向str中第一个不能转换的字符。base的取值与strtol相同。

4.环境变量函数
char *getenv(const char *name):获取名为name的环境变量的值,返回一个指向该变量值的字符串指针。如果不存在该环境变量,返回NULL。
int putenv(const char *string):设置环境变量。string应该包含一个形如name=value的字符串,如果成功,返回0,否则返回-1。

5.进程控制函数(续)
void exit(int status):终止当前进程并返回status给父进程。status为0表示正常终止,非0表示异常终止。
_Noreturn void abort(void):引发异常终止信号,进程会立即结束。
int atexit(void (*func)(void)):注册一个函数,当程序正常终止时调用该函数。可以注册多个函数,按照注册顺序倒序调用。
char *getcwd(char *buf, size_t size):获取当前工作目录的路径。将路径字符串存储在buf中,buf的大小为size字节。如果buf为NULL,函数会分配足够的空间以存储路径,并返回指向路径字符串的指针。如果发生错误,返回NULL。
int chdir(const char *path):改变当前工作目录为path指定的目录。
int execvp(const char *file, char *const argv[]):将当前进程替换为由file指定的可执行文件。argv为命令行参数数组,最后一个元素必须为NULL。如果调用成功,该函数不会返回;否则返回-1。

6.数学函数
double fabs(double x):计算x的绝对值。
double sqrt(double x):计算x的平方根。
double pow(double x, double y):计算x的y次方。
double sin(double x):计算x的正弦值。
double cos(double x):计算x的余弦值。
double tan(double x):计算x的正切值。
double exp(double x):计算e的x次方。
double log(double x):计算x的自然对数。
double log10(double x):计算x的以10为底的对数。
以上是stdlib.h中常用的函数,还有一些其他函数没有列举出来,但这些函数已经能够满足大部分编程需求了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SWIG 是一个工具,它可以使 C/C++ 代码与其他高级编程语言(如 Python)集成。为了使用 SWIG 调用 C 的 DLL,你需要进行以下步骤: 1. 安装 SWIG 工具。 2. 编写一个 SWIG 接口文件,该文件定义了 Python 脚本调用的函数和变量。例如,你可以创建一个名为 `example.i` 的文件,其包含以下内容: ``` %module example %{ #include "rtwtypes.h" #include <stddef.h> #include <stdlib.h> extern void LAOMp(const double A[90601], const double y[301], double k, double L, double out[301]); %} extern void LAOMp(const double A[90601], const double y[301], double k, double L, double out[301]); ``` 3. 创建一个 C 源文件,其包含要调用的函数的实现。例如,你可以创建一个名为 `example.c` 的文件,其包含以下内容: ``` #include "rtwtypes.h" #include <stddef.h> #include <stdlib.h> void LAOMp(const double A[90601], const double y[301], double k, double L, double out[301]) { // 实现 LAOMp 函数 } ``` 4. 使用 SWIG 工具生成一个 Python 模块。在终端运行以下命令: ``` swig -python example.i ``` 执行此命令将生成多个文件,包括一个名为 `example_wrap.c` 的文件。 5. 编译生成的 C 文件和 SWIG 生成的 `example_wrap.c` 文件以生成一个名为 `_example.so` 的共享库。在终端运行以下命令: ``` gcc -c example.c example_wrap.c -I/usr/include/python3.8 ld -shared example.o example_wrap.o -o _example.so ``` 6. 在 Python 使用生成的模块。例如,你可以编写以下 Python 脚本: ``` import example # 调用 LAOMp 函数 A = [1, 2, 3, ..., 90601] # 用实际的数据替换这里的占位符 y = [1, 2, 3, ..., 301] # 用实际的数据替换这里的占位符 k = 1.0 # 用实际的值替换这里的占位符 L = 1.0 # 用实际的值替换这里的占位符 out = [0, 0, 0, ..., 301] # 用实际的数据替换这里的占位符 example.LAOMp(A, y, k, L, out) ``` 这将调用名为 `LAOMp` 的 C 函数,并将其传递给一些数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值