C 语言是面向过程的, 而 C++是面向对象的
C 和 C++ 的区别:
C 是一个结构化语言, 它的重点在于算法和数据结构 C 程序的设计首要考虑的是如何通过一个过程, 对输入 (或环境条件) 进行运算处理得到输出 (或实现过程(事务) 控制)
C++, 首要考虑的是如何构造一个对象模型, 让这个模型能够契合与之对应的问题域, 这样就可以通过获取对象的状态信息得到输出或实现过程 (事务) 控制 所以 C 与 C++ 的最大区别在于它们的用于解决问题的思想方法不一样之所以说 C++ 比 C 更先进, 是因为 设计这个概念已经被融入到 C++ 之中
C 与 C++ 的最大区别: 在于它们的用于解决问题的思想方法不一样之所以说 C++ 比 C 更先进, 是因为 设计这个概念已经被融入到 C++ 之中 , 而就语言本身而言, 在 C 中更多的是算法的概念那么是不是 C 就不重要了, 错! 算法是程序设计的基础, 好的设计如果没有好的算法, 一样不行而且, C 加上好的设计也能写出非常好的东西
初入职场, 才发现自己的 C 基础是多么的欠缺晚上加班没事, 作为程序员提升自身技术的一部分, 走读公司代码, 才发现简单的一个功能要是让自己来实现的话, 却也是漏洞百出先说说原有代码的功能, 根据 MAC 地址来更新维护的 ARP 表
原理很简单: 读取文件 proc/net/arp, 然后对文件内容进行解析, 后续进行相应的操作这里只是根据自己的回忆对模糊的知识点进行总结新手们可以拿来学习学习, 大牛们看看亦可, 加深印象, 欢迎提意见, 喷子就不用来了
1)打开文件 `proc/net/arp`, 获取 ARP 信息具体如下图:
小编推荐一个学 C 语言 / C++ 的学习裙 二六三, 六八八, 二七六 , 无论你是大牛还是小白, 是想转行还是想入行都可以来了解一起进步一起学习! 裙内有开发工具, 很多干货和技术资料分享!
arp
这里比较简单, 需要注意的就是文件操作完毕后记得 fclose()释放相关资源
2)getline()按行读取文件内容
gcc 扩展定义的函数
它会生成一个包含一串从输入流读入的字符的字符串, 直到以下情况发生会导致生成的此字符串结束 1)到文件结束, 2)遇到函数的定界符, 3)输入达到最大限度
函数定义如下:
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
需要注意的是参数指向存放该行字符的指针, 如果是 NULL, 则有系统帮助 malloc, 请在使用完成后 free 释放.
3)strtok()使用
字符串分割函数, 不可重入, 函数原型如下:
char* strtok (char* str,constchar* delimiters );
函数返回值: 当 s 中的字符查找到末尾时, 返回 NULL;
如果查不到 delimiter 所标示的字符, 则返回当前 strtok 的字符串的指针
请注意, 并不是不存在要查找的分隔符时才返回 NULL
4)strtol()函数的使用
完成不同进制之间的转换
5)ssanf()的使用
其作用是按照固定格式读取字符串常见的用法相信大家都比较熟悉了, 这里简单复习一下
常见的用法如下:
- C++char buf[512] = {0};
- sscanf("123456", "%s", buf);//123456
自己很少用的是有关 sscanf 中相关正则匹配
sscanf()函数原型如下:
int sscanf( string str, string fmt, mixed var1, mixed var2 ... );
其中, format 可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | '' |'/t'|'/n' | 非 % 符号}
1 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)
2{a|b|c}表示 a,b,c 中选一,[d], 表示可以有 d 也可以没有 d
3width 表示读取宽度
4{h | l | I64 | L}: 参数的 size, 通常 h 表示单字节 size,I 表示 2 字节 size,L 表示 4 字节 size(double 例外),l64 表示 8 字节 size5type : 这就很多了, 就是 %s,%d 之类
6 特别的:%*[width] [{h | l | I64 | L}]type 表示满足该条件的被过滤掉, 不会向目标参数中写入值
例如本程序中
sscanf(szLine, "%s%*s%*s%s", szIPAddr, szHWAddr);
将 szLine 中的第二个, 第三个字符串过滤掉
完整代码如下:
小编推荐一个学 C 语言 / C++ 的学习裙 二六三, 六八八, 二七六 , 无论你是大牛还是小白, 是想转行还是想入行都可以来了解一起进步一起学习! 裙内有开发工具, 很多干货和技术资料分享!
输出结果如下:
来源: http://www.jianshu.com/p/9c9fabd0b5b8