函数
来源:互联网 发布:局域网监控软件排行 编辑:程序博客网 时间:2024/05/16 12:57
实现四个函数:
slen() - 求字符串的长度,若为空指针,则报错。
scpy() - 字符串拷贝,考虑缓冲区溢出,
成功返回目标缓冲区地址,
目标缓冲区无效时报错。
intmin() - 求两个整数的最小值,若二者相等,则报错。
intave() - 求两个整数的平均值,考虑求和溢出,
该函数不会失败。
#include <stdio.h>// 求字符串长度// 成功返回字符串长度,失败返回(size_t)-1size_t slen (const char* s) { if (! s) return -1; size_t len; for (len = 0; s[len]; ++len); return len;}// 字符串拷贝// 成功返回目标字符串,失败返回NULLchar* scpy (char* dst, size_t size, const char* src) { if (! dst || ! size) return NULL; size_t len = slen (src); if (len == -1) return NULL; size_t i, chs = size - 1 < len ? size - 1 : len; for (i = 0; i < chs; ++i) dst[i] = src[i]; dst[i] = '\0'; return dst;}// 求整数最小值// 成功返回0,失败返回-1int intmin (int a, int b, int* min) { if (a == b) return -1; *min = a < b ? a : b; return 0;}// 求整数平均值// 成功返回参数整数的平均值,不会失败int intave (int a, int b) {// return (a+b)/2;没有考虑溢出 return (a & b) + ((a ^ b) >> 1);}int main (void) { size_t len = slen ("Hello World !");// size_t len = slen (NULL); if (len == -1) printf ("求字符串长度失败!\n"); else printf ("字符串长度:%u\n", len); char dst[5]; if (! scpy (dst, sizeof (dst) / sizeof (dst[0]), "0123456789"))// if (! scpy (NULL, 0, "0123456789")) printf ("字符串拷贝失败!\n"); else printf ("字符串副本:%s\n", dst); int min; if (intmin (-1, 0, &min) == -1)// if (intmin (-1, -1, &min) == -1) printf ("求整数最小值失败!\n"); else printf ("整数最小值:%d\n", min); printf ("整数平均值:%d\n", intave (1234, 5678)); return 0;}
0 0
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- MAC下使用终端配置gradle环境变量
- TabLayout+ViewPager实现滑动底部导航栏
- Java超级类:java.lang.Object类学习总结
- 【匿名内部类】通过内部类匿名实现接口
- Linux下安装ALSA
- 函数
- SICP_Python版:Chapter 2:Implement simple object system
- linux安装expressvpn以及使用指南
- java线程——模拟多窗口售票过程
- 八月英语——近朱者赤
- DialogFragment使用时遇到的一些问题
- 安装wamp时最后提示系统缺少msvcr110.dll的解决方法
- LoadLibrary python.plw error: 找不到指定的模块
- 算法入门