C语言学习----由strcat的引发的空间思索问题

C语言学习笔记(2) 在学习前,需要有一定的C语言基础。不必很深入,只需要知道函数,头文件,指针,数组等的概念就可以,但并非0基础笔记。由于写到后面,不好编辑了,决定分成多篇写,请按编号学习,或者直接看目录先。 阅读详情

众所周知  strcat(s1,s2)为C语言的字符串串接函数

今天遇到一个问题   

如下:

    char *s1 = "str";
    char s2[2] = {0};
    strcat(s1,s2);

这样串接在c++的编译器下会发生段错误报错  程序会异常 

开始以为是结束符的问题  故改成了

 即使将 s2[0]='a' , s2[1]='\0' 仍旧如此

这是为什么呢

用sprintf来进行串接  依旧一样  意识到这是个人问题  

后来 将s1写成了   char s1[100] = "str";

问题立即被解决  才恍然大悟  原来是空间划分的问题  char *str =“str” 给str划分的空间是“str”这个字符串的大小  

已经无法再加入  强行加入后 地址未被指定划分  会跑飞   在C语言编译器中 这类问题很多情况下都不会报错  最多给个警告  最后造成了重大的漏洞 

c是弱语言类型  很多问题都被忽略   而c++是强语言类型  很多问题都被具体提出来了  

而char s1[100] = "str";则强行分配了这么大的地址 只要没超过就不会有问题  但是占用的空间却固定

这个问题以前完全被我忽略了   突然发现 路还是很长  很多东西都不懂    有待继续加深


零基础C语言学习指南:从环境搭建到核心语法与实战应用 C语言作为计算机编程的基石,其核心在于理解程序如何在内存中运行。通过掌握指针、内存管理等底层原理,学习者能够深入理解计算机系统的工作机制,为后续学习数据结构、操作系统乃至嵌入式开发打下坚实基础。在工程实践中,C语言的高效性与对硬件的直接控制能力使其在系统编程、嵌入式开发等领域具有不可替代的技术价值。无论是应对计算机二级、专升本等考试,还是为嵌入式开发、算法学习做准备,明确学习目标并搭建合适的开发环境都是首要步骤。本文围绕C语言核心语法与高频考点,结合翁恺课程、小黑课堂题库等热门学习资源,以及VSCode、C 阅读详情

相关推荐

DeepSeek-Coder:ERP二次开发的语义翻译器与智能杠杆

ERP二次开发长期面临文档残缺、系统封闭、规则耦合深等痛点,传统低代码与通用AI编程工具难以理解SAP/用友/U9等系统的数据契约、事务约束与权限穿透逻辑。DeepSeek-Coder通过ERP垂直领域微调、语义解析引擎与可嵌入CI/CD的执行沙箱,实现自然语言到可审计、可追溯、可热更新代码的精准映射。它不替代开发,而是作为‘语义翻译器’,将业务规则转化为带事务回滚、行级权限过滤、SDK原生调用的生产级代码,显著降低金蝶云星空、用友U9、鼎捷易飞等系统的二次开发门槛与维护成本。

weixin_34318326的博客 437

strcat函数越界的问题

<br />首先,这是一个非常有趣的问题!<br />我也是最近看了一本《C++高效编程:内存与性能优化》的书才弄明白其中的奥秘!<br />我们先来看一个“奇怪”的现象:<br /><br />CODE:<br />        struct A { char a; long b; char c; long d; };<br />        struct B { char a; char c; long b; long d; };<br /><br />        cout << sizeof(

sendfeng的专栏 7109

Mediapipe入门——搭建姿态检测模型并实时输出人体关节点3d坐标(2024.1.4更新)

Mediapipe入门,利用mediapipe搭建人体整体检测模型,并输出右手21个关节点的坐标;mp_holistic.Holistic函数理解,mp_holistic.Holistic.process函数理解;mp.solutions.drawing_utils.draw_landmarks函数理解;Mediapipe实时姿态估计,3d骨架铰接图,matplotlib和Mediapipe绘图

kalakalabala的博客 6万+

strcat小心使用

      strcat是对字符串的拼接,有时候拿过来用挺方便的。但是大面积用,代码变得不清晰,都不知道字符串到底编程了什么。还有另外一点,如果定义了一个全局的字符串,函数循环里需要对字符串拼接后使用,如果不停的循环,就相当于不停的追加,可能造成内存溢出,或者资源崩溃。 例子:      ID; //全局变量(CString类型)       //循环    {        char ...

pengshengli的博客 5387

Windows 11安装realtek audio control

Windows 11安装realtek audio control,解决无法链接RPC问题

m0_46144825的博客 8万+

修改串口服务器,串口虚拟化 | 串口服务器Nport 5630 设置

原标题:串口虚拟化 | 串口服务器Nport 5630 设置JZGKCHINA项目改造,客户需要对IFix4.5进行升级,并优化通讯,在不改变原来配置的基础上逐步进行替换。需要将IFix升级到IFix5.9,数据库升级为SQL Server 2016,客户现场使用的智能仪表都是支持Modbus RTU协议的,因原来的手拉手的通讯方式的,当一台仪表掉线后,会影响到其他仪表的通讯,所以此次在不改变原有...

weixin_31688465的博客 2408

C语言学习笔记20260619-字符串库函数模拟实现

本文详细解析了C语言中四个核心字符串库函数(strlen、strcpy、strcat、strcmp)的模拟实现方法。通过计数器、递归和指针运算三种方式实现strlen;利用后置++的巧妙特性实现高效的strcpy;分两步完成strcat的字符串追加;以及考虑字符编码的strcmp实现。重点强调了const修饰符、断言保护、指针运算等关键技术,并指出了各函数的潜在风险(如strcat的内存重叠问题)和优化建议(如无符号字符比较)。这些底层实现不仅帮助理解标准库的工作原理,也是提升C语言编程能力的重要实践。

2503_92342417的博客 369

航天仿真必看:如何用SOFA库实现高精度GCRS-ITRS坐标转换?避坑指南

本文深入解析了航天仿真中高精度GCRS-ITRS坐标转换的关键技术,重点介绍了SOFA库在天球系与轨道系转换中的权威应用。通过对比传统方法的误差来源,详细阐述了SOFA库的转换算法优势、工程实现步骤及误差控制策略,为航天器轨道仿真提供毫米级精度的解决方案。

7h6j5k4l3的博客 850

c语言学习的计划,c语言重新学习计划(转帖)

该楼层疑似违规已被系统折叠隐藏此楼查看此楼字符串学习时间:1.5W(“W”周,下同)知识点checkliststrlen()函数的返回值是什么类型的?字符串strlen()的值,是否和他占据的内存空间相同?你是否知道strcpy函数存在的潜在风险?如何避免?如果一个字符串没有字符串结束符,而调用str开头的库函数,会发生什么?Strcpy(),strcat(),strcmp(),strncpy(...

weixin_30831529的博客 185

基于Python的海关进出口数据爬取与贸易关系分析

本文介绍了如何使用Python爬虫技术获取海关进出口数据,并基于这些数据进行贸易关系分析。文章详细阐述了数据采集、清洗、存储和分析的全过程,使用了最新的爬虫技术和数据分析方法,为国际贸易研究提供数据支持和技术参考。关键词:Python爬虫、海关数据、贸易分析、数据可视化、Selenium、Scrapy。

2201_76125261的博客 543

最新Python爬虫实战(入门爬虫篇)——案例20:某股票数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例针对某股票行情网的静态HTML页面,实现了全市场股票数据的全自动化爬取,覆盖了从抓包分析、请求模拟、数据解析到数据存储的完整爬虫流程,非常适合入门学习者巩固基础,核心知识点和实现要点总结如下:首先是页面分析的核心逻辑,静态HTML页面的数据爬取,核心在于通过浏览器开发者工具,完成完整的抓包分析和标签结构定位。我们不需要像动态页面那样找隐藏的API接口,只需要确认数据在主文档的HTML源码中,然后通过元素选择器,精准找到每个字段对应的标签,总结出统一的标签结构规律,就能实现批量数据提取。

努力让自己发光,对的人才能迎着光而来 19万+

C语言学习笔记:从语法到工程实践的核心难点与避坑指南

计算机程序设计的基础在于理解内存管理与底层原理,C语言作为系统编程的核心,其指针和内存操作是构建计算思维的关键。指针的本质是内存地址的变量,通过类型决定解释内存的方式,而动态内存管理则涉及malloc、free等函数,需警惕内存泄漏和悬空指针问题。这些概念在嵌入式系统、操作系统开发和高性能计算中具有重要价值。本文聚焦于C语言学习中的常见陷阱,如指针未初始化、字符串缓冲区溢出等,通过GDB调试和Valgrind工具的使用,帮助开发者编写更安全、健壮的代码。掌握这些核心难点,能够为后续学习数据结构、算法及系统编

weixin_30781775的博客 390

YOLOv11改进策略【注意力机制篇】| SE、CBAM、ECA、CA、Swin Transformer等注意力机制全面解析与应用

本文详细介绍了五种主流的注意力机制及其在YOLOv11中的应用。通过合理的模块选择和位置部署,注意力机制能够显著提升目标检测性能。

QQ_778132974的博客 876

C语言字符串必知:末尾有个隐藏的\0,新手易踩坑

C语言字符串 在C语言程序设计体系中,字符串是处理文本信息的核心载体,其设计逻辑与底层实现深刻体现了C语言贴近硬件、高效灵活的语言特性。

dai_jiaqi的博客 490

Arcgis中的模型构建器(ModelBuilder)技术之批量图层转KML

这段时间全省各地都在开展耕地流出图斑整改恢复工作,期间或多或少都需要村委会协助摸排举证,除了举证软件外,奥维、外业精灵等软件想必大家接触得也很多。这就经常需要我们转kmz文件给业主或者摸排人员,那么有没有什么方法在arcgis下快速批量转kmz文件呢,今天就介绍一下如何在模型构建器(ModelBuilder)构建批量图层转KML的模型。

weixin_44671081的博客 1324

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C语言字符串

C语言字符串 在C语言程序设计体系中,字符串是处理文本信息的核心载体,其设计逻辑与底层实现深刻体现了C语言贴近硬件、高效灵活的语言特性。

2601_95162261的博客 209

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C语言strcmp模拟实现:底层内存契约与安全编码实践

字符串比较是C语言中最基础也最易被误解的核心操作,其本质是基于ASCII码值的字节级逐位比对。理解strcmp需从字符编码原理出发,明确其依赖内存连续布局、指针线性遍历及''终止约定三大前提;技术价值在于暴露C语言底层运行规则——如char符号性、整型提升、零扩展加载等关键机制;广泛应用于系统编程、嵌入式开发、协议解析等对性能与安全性要求严苛的场景。本文深入剖析标准行为、平台差异与工业级实现,重点覆盖unsigned char强制转换和空指针防护两大热词所涉核心实践。

weixin_34166472的博客 423

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

写给三弟的 C语言编程 快速入门

三弟,你要的C语言快速入门,已整理好 请接收。

码刀攻城 3933

零基础C语言教程:系统化学习路径与实战指南

C语言作为计算机编程的基石,其核心在于理解计算机底层运行机制,如内存管理和指针操作。掌握C语言不仅能夯实编程基础,更能为学习数据结构、操作系统乃至其他高级语言铺平道路。其技术价值在于培养严谨的逻辑思维和系统级编程能力,广泛应用于嵌入式开发、系统软件和高性能计算等领域。对于初学者而言,一套系统化的学习路径至关重要,它能有效避免知识碎片化,通过从环境搭建、基础语法到项目实战的闭环设计,帮助学习者克服常见难点,实现从理论到实践的平稳过渡。本教程正是围绕这一目标,提供了详尽的案例讲解和实践导向的内容,旨在助力学习者

weixin_33882452的博客 451

C语言编程入门:从翁恺课程到实战通讯录项目

编程语言是计算机科学的基础工具,其核心在于通过特定语法规则指挥计算机执行任务。C语言作为贴近系统底层的编译型语言,以其简洁的语法和直接的内存操作能力,深刻揭示了程序运行的基本原理,如变量存储、函数调用和指针机制。掌握C语言不仅有助于理解计算机底层运作逻辑,更能为学习数据结构、操作系统等核心课程奠定坚实基础,并提升后续学习高级语言的效率。在工程实践中,C语言凭借其高性能特性,广泛应用于操作系统、嵌入式系统和驱动开发等场景。本文以浙江大学翁恺老师的C语言课程为蓝本,系统梳理了从开发环境搭建、基础语法到指针核心概

weixin_34221775的博客 353

C语言入门到实战:从零构建文件存储通讯录系统

编程语言的核心在于理解数据在计算机中的表示与操作方式。C语言作为一门中级语言,其设计哲学是贴近硬件,提供了对内存的直接操作能力,这使其成为理解计算机底层工作原理的绝佳工具。通过指针和内存管理,程序员可以清晰地掌控数据的存储与访问,从而实现高效、可控的程序逻辑。这种底层控制力在系统编程、嵌入式开发和高性能计算等场景中具有不可替代的价值。本文以【指针】和【动态内存】这两个核心概念为切入点,通过构建一个完整的【文件存储通讯录管理系统】实战项目,系统拆解C语言从环境搭建、核心语法到项目开发的完整学习路径,帮助初学者

weixin_34409357的博客 405

C语言入门:从原理到实践,掌握底层编程核心

编程语言是连接人类逻辑与计算机硬件的桥梁,其中C语言以其贴近硬件、高效灵活的特性,成为理解计算机系统工作原理的基石。从变量、函数到指针、内存管理,C语言的核心概念直接映射了计算机的底层运作机制,如内存地址、数据存储和CPU指令执行。掌握这些原理不仅能提升代码的调试和优化能力,更是学习操作系统、嵌入式开发、编译器设计等硬核技术的前提。通过构建学生管理系统等实践项目,开发者可以深入理解数据结构、文件操作等工程实践,为后续技术深造打下坚实基础。本教程将围绕指针、内存管理等核心难点,结合常见开发环境配置,提供系统的

weixin_30555515的博客 327

解决strcat内存出错问题

  【转】 tianweishuiguo的回答 http://topic.youkuaiyun.com/u/20100401/21/edcd5c68-7a33-4581-bc5b-c2b63464c90b.html char *a="This is ";//这个在常量区分配一个空间,然后a指向此空间 char a[] = "This is"//这个在常量区分配一个空间,然后又在栈上分配一个空间,

sumang_87的专栏 2210
上一篇: Qt学习之旅-----Qt4在Window和Linux下的中文显示问题
下一篇: Qt学习之旅----功能函数集锦(一)
SeeCandy
博客等级 码龄14年 1粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值