美文网首页C语言#语法程序员
C语言基础学习深入之常用常错函数新读

C语言基础学习深入之常用常错函数新读

作者: 小辰带你看世界 | 来源:发表于2018-02-18 22:04 被阅读17次

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。

3、width表示读取宽度。

4、{h | l | I64 | L}:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size。5、type :这就很多了,就是%s,%d之类。

6、特别的:%*[width] [{h | l | I64 | L}]type 表示满足该条件的被过滤掉,不会向目标参数中写入值

例如本程序中

sscanf(szLine, "%s%*s%*s%s", szIPAddr, szHWAddr);

将szLine中的第二个,第三个字符串过滤掉。

完整代码如下:

小编推荐一个学C语言/C++的学习裙【 二六三,六八八,二七六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

输出结果如下:

相关文章

  • C语言基础学习深入之常用常错函数新读

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程...

  • C语言基础深入之常用常错函数新读

    先说说原有代码的功能,根据MAC地址来更新维护的ARP表。 你还在为没有学习平台而苦恼吗?你还在为没有学习资料而烦...

  • NDK开发--C语言指针(数组指针,函数指针)

    上一节 C语言基础部分我们了解了C语言中的指针知识,这一节我们开始深入指针的学习,重点是数组指针,函数指针。 第一...

  • C语言学习入门01

    之前在大学期间学过C语言的基础,后来主要方向是java,就没继续深入学习C语言。但是C语言作为一个基础语言,对开发...

  • C语言知识拾遗

    一、前言 本系列文章旨在总结 C 语言基础知识,包括 标准库函数、疑难点分析、常用函数封装、常用项目代码块 等。关...

  • iOS开发 -- C语言基础3(函数)

    iOS开发 -- C语言基础3(函数) 什么是函数 一、函数的分类 C语言中的函数就是面向对象中的"方法",C语言...

  • C语言的基本输入与输出函数

    C语言中最常用最基础的输入输出函数:printf() 和 scanf(); 例子: import

  • C语言中最常用标准库函数

    本文仅用作个人记录学习之用,希望深入学习的朋友请查看原作者文章:C语言中最常用标准库函数 标准头文件包括: 一、标...

  • R语言常用函数整理(基础篇)

    R语言基础函数整理 R语言常用函数整理本篇是基础篇,即R语言自带的函数。 一、数据管理 vector:向量nume...

  • 计算机原理-原码反码补码

    原码反码补码 /*最近在重新学习一遍C语言,以更加深入的理解C语言,为C++打下比较坚实的基础。此次学习主要依据的...

网友评论

    本文标题:C语言基础学习深入之常用常错函数新读

    本文链接:https://www.haomeiwen.com/subject/menbtftx.html