<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[flowhehe的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/flowhehe</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; flowhehe]]></copyright><item><title><![CDATA[课时17：C语言常用字符串函数详解（二）：strcmp与strstr]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162240885</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162240885</guid><author>flowhehe</author><pubDate>Mon, 10 Aug 2026 09:51:38 +0800</pubDate><description><![CDATA[摘要：C语言中strcmp和strstr是核心字符串函数。strcmp通过逐字符比较ASCII码值来判断字符串大小/相等（不可用==替代），常用于登录验证等场景。strstr用于查找子串位置，适用于敏感词过滤、文本搜索等功能。文章还介绍了安全版本函数（如strncpy）及字符查找函数（strchr），强调使用时需注意字符串边界和NULL判断。通过用户登录和敏感词过滤的完整代码示例，展示了函数的实际应用，最后指出字符串操作必须依赖\0结尾符。]]></description><category></category></item><item><title><![CDATA[课时16：常用字符串函数（一）]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162240274</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162240274</guid><author>flowhehe</author><pubDate>Mon, 10 Aug 2026 09:50:58 +0800</pubDate><description><![CDATA[都需要。都是遇到\0就停止，所以操作的必须是有效的字符串。都不会检查目标数组是否够大，需要程序员自己保证。返回值都是目标地址，方便链式调用（比如。]]></description><category></category></item><item><title><![CDATA[课时15：C 语言字符串核心原理详解]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162240212</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162240212</guid><author>flowhehe</author><pubDate>Mon, 10 Aug 2026 09:50:06 +0800</pubDate><description><![CDATA[字符串，就是“一串字符”。比如 “hello”、“你好”、“12345”，这些都是字符串。在 C 语言里，字符串的本质就是：以\0结尾的字符数组。⚠️ 这是 C 语言字符串最核心、最重要的概念，没有之一！字符串 = 字符数组 + 末尾的\0。少了\0，它就不是字符串，只是一堆字符。]]></description><category></category></item><item><title><![CDATA[课时14：字符数组详解]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162239581</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162239581</guid><author>flowhehe</author><pubDate>Mon, 10 Aug 2026 09:49:30 +0800</pubDate><description><![CDATA[本文系统介绍了C语言中字符数组的核心知识与应用。主要内容包括：字符数组的定义和三种初始化方式，重点强调了字符串常量初始化会自动添加'\0'结束符的特性；对比普通数组，讲解字符数组存储字符串时的特殊处理；详细演示了printf、scanf、gets、puts等输入输出函数的使用方法；通过大小写转换、求字符串长度等示例展示逐个字符操作；实现字符串拷贝和拼接功能；厘清字符数组与字符串的关系（前者是容器，后者是以'\0'结尾的字符序列）。文末提供五个实践练习，帮助巩固字符串处理能力，为后续深入学习字符串原理奠定基础]]></description><category></category></item><item><title><![CDATA[课时 13：二维数组原理与实战]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162239488</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162239488</guid><author>flowhehe</author><pubDate>Mon, 10 Aug 2026 09:48:47 +0800</pubDate><description><![CDATA[本文系统讲解C语言二维数组的核心概念与应用。从基础定义、下标访问规则到四种初始化方式，结合代码示例详细演示。重点解析二维数组"行优先"的内存存储原理，并通过学生成绩管理和矩阵运算（加法/转置）两个完整案例，展示如何利用双层循环进行遍历与操作。文章还提供五个实用练习题帮助巩固知识，包括求最大值、对角线求和、矩阵乘法等实际应用场景。适合C语言初学者全面掌握二维数组的表格化数据处理能力。]]></description><category></category></item><item><title><![CDATA[课时12：一维数组经典实战]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162238854</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162238854</guid><author>flowhehe</author><pubDate>Mon, 10 Aug 2026 09:47:24 +0800</pubDate><description><![CDATA[最值求解：通过“打擂台”算法求数组最大值和最小值，演示了单次遍历同时获取最值的高效方法。求和与平均值：展示数组元素累加与平均值计算，重点强调累加器初始化和浮点数除法注意事项。冒泡排序：详细解析冒泡排序原理、代码实现及优化技巧（提前终止），通过实例演示排序过程。其他基础操作：包括线性查找元素和数组逆序两种常用算法。综合实战：结合输入、统计、排序等功能，实现一个完整的成绩统计系统。课后练习：提供 5 个针对性练习题，巩固数组操作技能。]]></description><category></category></item><item><title><![CDATA[课时11：C语言教程：一维数组的定义与使用]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162238783</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162238783</guid><author>flowhehe</author><pubDate>Mon, 10 Aug 2026 09:43:16 +0800</pubDate><description><![CDATA[摘要：本文系统介绍了 C 语言中一维数组的核心概念与使用方法。首先阐述了数组的必要性，即高效管理大量同类型数据。接着详细讲解了数组的定义语法、下标从 0 开始的规则、四种初始化方式以及通过循环进行遍历的实践。文章重点强调了数组越界访问的风险与后果，并解释了数组在内存中连续存储的特性。最后提供了四个课后练习，帮助读者巩固所学知识。语法格式数据类型 数组名[数组长度];示例// 定义一个能存 50 个 int 的数组，叫 scores// 定义一个能存 30 个 double 的数组，叫 heights。]]></description><category></category></item><item><title><![CDATA[课时10：C 语言循环跳转语句详解：break、continue 与 goto]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162238171</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162238171</guid><author>flowhehe</author><pubDate>Tue, 23 Jun 2026 19:03:55 +0800</pubDate><description><![CDATA[摘要： 本文详细介绍了 C 语言中三种循环跳转语句：、 和 。 用于立即终止当前循环； 用于跳过本次循环剩余代码，进入下一轮； 则允许在函数内任意跳转，但因其破坏代码结构而不被推荐。文章通过生活化比喻和完整代码示例（包括寻找特定数字、打印特定数列、多层循环跳出技巧）阐述了各语句的用法、区别与适用场景，并提供了两个综合练习（简易计算器和猜数字游戏）以巩固所学知识。最后强调，在绝大多数情况下应优先使用结构化的  和 ，谨慎使用 。上节课我们学习了三种循环（for、while、do-while），它们都是按部就班]]></description><category></category></item><item><title><![CDATA[课时9：C 语言循环结构详解：while 与 do-while 循环]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162237415</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162237415</guid><author>flowhehe</author><pubDate>Tue, 23 Jun 2026 19:03:26 +0800</pubDate><description><![CDATA[本文全面介绍了 C 语言中 while 和 do-while 循环的语法、执行逻辑、适用场景及常见用法。while 循环：适用于循环次数未知、仅知停止条件的场景，遵循“先判断后执行”原则，需注意避免因缺少更新语句导致的死循环。do-while 循环：while 循环的变种，特点是“先执行后判断”，循环体至少执行一次，适合菜单程序、输入验证等场景。循环选择指南：for 循环适合已知循环次数；while 循环适合未知次数但知停止条件；do-while 循环适合至少执行一次的场景。三者功能等价，可互相改写。]]></description><category></category></item><item><title><![CDATA[课时8：C 语言 for 循环详解：从入门到精通]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162237285</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162237285</guid><author>flowhehe</author><pubDate>Tue, 23 Jun 2026 19:03:01 +0800</pubDate><description><![CDATA[本文全面介绍了 C 语言中for循环的语法、用法和常见应用场景。循环的必要性：解释了为什么需要循环结构来避免重复代码。for 循环基本语法：详细讲解了for循环的三个表达式（初始化、条件、更新）及其执行顺序。基础示例：通过打印 1 到 10 的示例，演示了for循环的基本用法。常见写法：展示了倒序循环、步长不为 1 的循环以及表达式省略的写法。嵌套循环：介绍了循环嵌套的概念，并以打印矩形为例说明其执行过程。图形打印案例。]]></description><category></category></item><item><title><![CDATA[课时7：C 语言 switch 分支语句详解：从语法到实战]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162236566</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162236566</guid><author>flowhehe</author><pubDate>Tue, 23 Jun 2026 19:02:23 +0800</pubDate><description><![CDATA[坑 1：忘记写 break→ 导致case穿透，后面的代码也执行了。坑 2：case 后面写变量→case后面必须是常量！不能写变量。坑 3：case 后面写范围→case 1..10是不行的，只能写单个值。坑 4：switch 里判断浮点数→switch不支持floatdouble类型。坑 5：case 后面的值重复→ 两个case不能是同一个值。坑 6：case 后面忘了加冒号→ 是不是case 1。]]></description><category></category></item><item><title><![CDATA[课时6：C 语言 if/else 条件判断语句详解]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162236376</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162236376</guid><author>flowhehe</author><pubDate>Tue, 23 Jun 2026 19:01:55 +0800</pubDate><description><![CDATA[文章摘要：本文系统讲解了C语言中if/else条件判断语句的完整知识体系。从最简单的if单分支结构开始，逐步深入到if-else双分支、多分支（if-else if-else）、嵌套if等复杂用法。通过丰富的代码示例（如成绩评级、奇偶判断、点餐系统等）和实战案例（区间判断），帮助读者掌握条件判断的核心语法和实际应用。文章最后总结了新手常见的5个坑点（如==误写为、区间判断错误写法等），并提供了4个课后练习巩固学习效果。适合C语言初学者系统学习条件判断语句。]]></description><category></category></item><item><title><![CDATA[课时5：程序流程结构概述]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162232092</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162232092</guid><author>flowhehe</author><pubDate>Tue, 23 Jun 2026 19:01:13 +0800</pubDate><description><![CDATA[本文是C语言入门系列的核心教程，通过HelloWorld 详解带你深入理解程序的基本构成。你将掌握C语言的三种基本流程结构（顺序、选择、循环），并了解从源代码到可执行程序的完整编译运行流程。本课旨在为你打下坚实的编程基础，让你能够编写结构清晰、逻辑正确的C语言程序。大家可以把程序想象成一条马路，代码就是马路上的汽车。程序流程结构，说白了就是规定「汽车该怎么走」的交通规则。你想啊，如果马路上没有红绿灯、没有转弯道、没有环岛，那汽车还不乱套了？]]></description><category></category></item><item><title><![CDATA[课时4：运算符大全 —— 算术 / 赋值 / 关系 / 逻辑]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162241698</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162241698</guid><author>flowhehe</author><pubDate>Tue, 23 Jun 2026 19:00:32 +0800</pubDate><description><![CDATA[关系运算就是「比大小」，判断两个数的关系。关系运算的结果只有两种：真（成立）或者假（不成立）。在 C 语言里，「真」用非 0 的数表示（通常是 1），「假」用 0 表示。运算符含义示例结果大于5 > 31（真）小于5 < 30（假）>=大于等于5 >= 51（真）<=小于等于5 <= 30（假）==等于5 == 51（真）!不等于5!= 31（真）// 1// 0// 1// 0// 0printf("%d!= b);]]></description><category></category></item><item><title><![CDATA[课时3：C 语言输入输出函数：printf 与 scanf 详解]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162235378</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162235378</guid><author>flowhehe</author><pubDate>Tue, 23 Jun 2026 18:59:43 +0800</pubDate><description><![CDATA[本文详细介绍了 C 语言中两个最核心的输入输出函数printf和scanf的用法与注意事项。printf格式化输出：从基本用法、转义字符、占位符（%d%f%c%s等）到高级功能如控制小数位数（%.2f）和宽度对齐（%-10s），并提供了完整的占位符对照表。scanf格式化输入：涵盖基本语法、各种数据类型的输入方法、多值输入、字符串输入的特性（遇空格停止），并重点对比了printf与scanf在double类型上占位符的区别（%fvs%lf六大常见坑点：系统梳理了使用scanf。]]></description><category></category></item><item><title><![CDATA[课时 2：变量、常量与数据类型（核心重点）]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162235252</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162235252</guid><author>flowhehe</author><pubDate>Tue, 23 Jun 2026 18:59:02 +0800</pubDate><description><![CDATA[本课时系统讲解了C语言编程中的核心基础概念：变量、常量与数据类型。通过超市货架的生动比喻，将计算机内存比作仓库，变量比作货架标签，数据类型比作货架类型。变量：作为存储数据的"盒子"，介绍了变量的定义、初始化方法以及命名规范（只能包含字母、数字、下划线，不能以数字开头，不能使用关键字）。关键字：C语言的32个保留字，分为数据类型、控制语句、存储类型等类别，不能用作变量名。数据类型整型（int/short/long/long long）：存储整数，分为有符号和无符号。]]></description><category></category></item><item><title><![CDATA[课时1：第一个C语言程序 —— HelloWorld]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/162233992</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/162233992</guid><author>flowhehe</author><pubDate>Tue, 23 Jun 2026 18:58:23 +0800</pubDate><description><![CDATA[本文是一篇面向初学者的C语言入门教程，以经典的"Hello, World!"程序为核心，详细讲解了C语言程序的基本结构、编译运行流程以及编程基础概念。文章采用大白话讲解方式，从代码逐行解析到实际动手操作，帮助读者建立对C语言编程的直观理解。主要内容包括：C语言程序的基本框架（#include、main函数、大括号、return 0）、printf函数的使用、注释的写法、编译器的使用（gcc），以及新手常见错误和解决方案。]]></description><category></category></item><item><title><![CDATA[第五章 编写一个hello_word.ko以及Makefile，执行加载和卸载模块]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/139005250</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/139005250</guid><author>flowhehe</author><pubDate>Fri, 17 May 2024 15:28:40 +0800</pubDate><description><![CDATA[内核ko文件的框架及Makefile。]]></description><category></category></item><item><title><![CDATA[第四章 内核数据转发sk_buff结构说明]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/138997736</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/138997736</guid><author>flowhehe</author><pubDate>Fri, 17 May 2024 10:38:05 +0800</pubDate><description><![CDATA[编写内核数据转发代码之前需要对内核报文的数据结构以及函数说明有详细的了解，才能在后续的编码中能够根据自己的需求进行快速的开发。]]></description><category></category></item><item><title><![CDATA[第三章 内核数据报文处理流程]]></title><link>https://blog.youkuaiyun.com/flowhehe/article/details/138995700</link><guid>https://blog.youkuaiyun.com/flowhehe/article/details/138995700</guid><author>flowhehe</author><pubDate>Fri, 17 May 2024 10:06:10 +0800</pubDate><description><![CDATA[数据在内核中的处理逻辑。]]></description><category></category></item></channel></rss>