C学习:必备常用函数功能模板

  • 字符型与数值转换
  • 将数组值输出打印到文本文件
  • 动态申请二维数组
  • BFS遍历模板

我们知道的东西是有限的,而我们不知道的东西则是无穷的。——拉普拉斯

字符型与数值转换


  • val -> str,数值到字符串的转换 sprintf()
  • str -> val,字符串到数值的转换atoi()sscanf()和。或自己实现:取从高到低取每个字符与'0'相减,并不断乘10累加进位。

用法示例:

  • int i = atoi(str)可以用sscanf(str, "%d", &i)替代。
  • long l = strtol(str, NULL, 10),可以用sscanf(str, "%ld", &l)替代。
  • sprintf(str, "%ld", l),则将长整型l的值转换成字符,拷贝到字符串str中。

相关文章:C学习:一网打尽字符串骚操作

将数组值输出打印到文本文件


文件输出综合应用范例,涉及库函数: fopen/fclose/fprintf(格式化输出)。

功能1:将变量值打印到文本文件中。

#include <stdio.h>
#define Q2_MAX_NUMBITS 8
const float Q2_NORM0[Q2_MAX_NUMBITS + 1] = {1., 2., 4., 8., 16., 32., 64., 128.
};int main(void)
{FILE *outStream = fopen("D:\\workspace\\outstream.txt", "w+"); // a+在文件末尾追加, w+每次从头开始写int i;fprintf(outStream, "Q2_NORM0");for (i = 0; i < Q2_MAX_NUMBITS + 1; i++) {if (i % 4 == 0) { // 隔四个元素换行fprintf(outStream, "\n");}fprintf(outStream, "%f,    ", Q2_NORM0[i]);}fprintf(outStream, "\n\n");fclose(outStream);return 0;
}

功能2:将整型数转换成0x121212的16进制HEX表达的整型数。

#include <stdio.h>
#define Q2_MAX_NUMBITSconst float Q2_NORM0[Q2_MAX_NUMBITS + 1] = {1., 2., 4., 8., 16., 32., 64., 128.
};int main(void)
{FILE *outStream = fopen("D:\\workspace\\outstream.txt", "w+"); // a+在文件末尾追加, w+每次从头开始写int i;fprintf(outStream, "Q2_NORM0 HEX");for (i = 0; i < Q2_MAX_NUMBITS + 1; i++) {if (i % 4 == 0) { // 隔四个元素换行fprintf(outStream, "\n");}fprintf(outStream, "0x%08x,    ", (int)Q2_NORM0[i]); // 08x控制输出的十六进制,用8个字符,不足的用0补齐,一个字符表示4位,共表示32位}fprintf(outStream, "\n\n");fclose(outStream);return 0;
}

参考:C语言的十六进制如何指定位宽----0x16输输出为0x0016?

动态申请二维数组


// 申请对应大小的二维数组并分配空间
int **resArr = (int **)malloc(depth * sizeof(int*));
if (resArr == NULL) {return NULL;
}
int *p;
int i;
for (i = 0; i < depth; i++) {p = (int*)malloc(numsSize * sizeof(int));if (p == NULL) {return NULL;}resArr[i] = p;
}

BFS遍历模板


struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;
};typedef struct QueNode { // BFS必备队列链表数据结构int depth;struct TreeNode *node;struct QueNode *next;
} StruQueNode;void InitQueList(StruQueNode **queList, struct TreeNode* node, int depth)
{*queList = (StruQueNode *)malloc(sizeof(StruQueNode));if (*queList == NULL) {return;}(*queList)->depth = depth;(*queList)->node = node;(*queList)->next = NULL;return;
}
int g_curLevelCnt;
int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes)
{if (root == NULL) {return NULL;}StruQueNode *queList, *queListHead, *queLastNode;InitQueList(&queList, root, 1);queLastNode = queList;queListHead = queList;g_curLevelCnt = 1;// BFSint depth = 1;struct TreeNode* node;while (queList != NULL) {// 当前层遍历while (depth == queList->depth) {node = queList->node;if (node->left != NULL) {InitQueList(&queLastNode->next, node->left, depth + 1);}queLastNode = queLastNode->next; // 记录队列Add尾部节点if (node->right != NULL) {InitQueList(&queLastNode->next, node->right, depth + 1);}queLastNode = queLastNode->next;queList = queList->next; // 当前层下一个节点}depth++; // 遍历完一层}*returnSize = depth;}

C学习:C语言必备函数模板,让你写C代码省力百倍相关推荐

  1. 学习Go语言必备案例 (3)

    21. 协程 Go 协程 在执行上来说是轻量级的线程. package mainimport ("fmt" ) func f(from string) {for i := 0; i ...

  2. 学习Go语言必备案例 (6)

    51.数字解析 从字符串中解析数字在很多程序中是一个基础常见的任务,在Go 中是这样处理的. package mainimport ("fmt""strconv" ...

  3. 一起学习C语言:函数(四)

    上一篇<一起学习C语言:函数(三)> 中,我们了解了变量的储存类别与声明方式,以及函数的递归调用原理.本章节,我们分析函数的指针调用,以及函数指针作函数参数使用的场景. 章节预览: 8. ...

  4. 一起学习C语言:函数(三)

    上一篇<一起学习C语言:函数(二)> 中,我们了解了内部函数和外部函数,以及变量的声明周期与作用域.本章节,我们分析函数的存储类别与声明方式,以及函数的递归调用原理. 章节预览: 6. 变 ...

  5. 一起学习C语言:函数(二)

    上一篇<一起学习C语言:函数(一)> 中,我们了解了函数的概念,以及函数实现与程序编译过程.本章节,我们分析内部函数和外部函数,以及变量的生命周期. 章节预览: 4. 外部函数与内部函数 ...

  6. 写的函数符号表里没有_你有没有想过,C语言 main 函数到底为啥这么写?

    但凡是学过C语言的人,都知道要先写main函数,然而很多时候我们看到的main函数却各有差异,这究竟是为啥?哪种是对的呢?今天我们就来聊聊main函数. 那么main函数一共有多少个版本呢? 1.ma ...

  7. 学java用什么写比较好_学习Java需要什么基础,初学Java如何写好代码

    原标题:学习Java需要什么基础,初学Java如何写好代码 初学Java的同学时常会遇到这样的情况,跟着入门教程看过一遍,但需要自己写代码的时候却无从下手:写代码的时候时常会遇到不懂的地方,如果停下来 ...

  8. 一起学习C语言:函数(一)

    上一章<一起学习C语言:初谈指针> 中,我们了解了指针和进程中的内存区域,以及动态管理内存空间方式.本章节,我们分析函数的用法,以及编写不同形式的函数. 章节预览: 函数 1. 函数的概念 ...

  9. [c++][语言语法]函数模板和模板函数 及参数类型的运行时判断

    参考:http://blog.csdn.net/beyondhaven/article/details/4204345 参考:http://blog.csdn.net/joeblackzqq/arti ...

最新文章

  1. 尹伊:我眼中的Datawhale
  2. 数据库db_files参数增大怎么办
  3. 华为存储服务器v3存储协议,华为oceanstor v3融合存储介绍.pdf
  4. 使用CSS3属性aspect-ratio做横屏检测优化用户体验,附demo完整代码
  5. OSChina 周六乱弹 —— 有人骂你神经病怎么办?
  6. 科目三靠边停车驾驶流程
  7. 自己动手架设linux下Web服务器(图)5
  8. Tips--创建jupyter notebook的虚拟环境
  9. 4、Linux的文件系统结构(目录树结构)
  10. python实现k core算法_python实现密度聚类(模板代码+sklearn代码)
  11. excel oledb mysql_C#实战023:OleDb操作-Excel数据写入
  12. 使用KeyShot调整一个场景中的照明亮度
  13. 用于函数优化的一维 (1D) 测试函数
  14. 【AD18】原理图生成PDF
  15. 为什么马云最佩服「唐僧团队」?
  16. VS Code —— 介绍如何配置快捷代码片段和一些自用插件
  17. 平面设计必备学习软件
  18. VS2008 Debug Error R6034
  19. 『天涯杂谈』 整理后的有关《新概念》英语的学习方法
  20. 抓包:Charles抓包配置分析笔记

热门文章

  1. R语言 stringr包
  2. FatMouse' Trade
  3. Zotero Better BibTex选项配置记录
  4. 两组数据的相关性分析
  5. 实现Android APK加固:代码加密隐藏、资源加密隐藏、so库加密隐藏。兼容unity引擎。附加固工具链接。
  6. 90后黑客攻击某购物平台 “一元购”买走800万金饰
  7. 14、flowable、camunda(卡蒙达) 等开源工作流引擎选择
  8. python栈的实现与应用
  9. 记一次对vue双向绑定的理解
  10. 手写Spring-第六章-让我访问!实现前置后置处理扩展功能