在Linux环境下使用C语言倒转字符串,输出错误的解决办法

项目场景:

学习在Linux环境下的C语言编程,利用GDB打Breakpoint,逐步调试Bug


问题描述

尝试将一个字符串倒转后输出,发现执行文件并没有正常的将倒转后的字符串输出。
源代码:

#include <stdio.h>int main(void)
{int i;char str[6] = "hello";char reverse_str[6] = "";printf("%s\n", str);for (i = 0; i < 5; i++)reverse_str[5-i] = str[i];printf("%s\n", reverse_str);return 0;
}

如下图所示,在Terminal中,reverse_str函数并没有如同我们预期的正常输出“olleh”。
倒转字符出输出错误


原因分析:

在C语言的编译中, char型通过在字符串末尾加'\0'的方式,描述不定长度的字符串。我们期望的是输出reverse_str这个数组变量,所以我们在GDB中跟踪这个变量的内容变化。结果发现循环结束后,如图所示,reverse_str数组中的内容是,\000\olleh,即倒转后的内容,不仅将hello 倒转了而且,将字符串末尾'\0'也倒转了,并放置在了reverse_str[0]位置。导致了本应该放置在数组末尾的'\0',被挤出了数组。C语言编译器无法正确读取字符串,所以输出错误。
找到debug的位置


解决方案:

解决方案很简单,源代码的问题在于字符串倒转之后每一个元素在数组中放置的位置不正确,只要将每个倒转后的元素移动一位就可以解决这个问题,空出reverse_str[6] 最后一个元素位置,就可以让C语言编译器正确的读取字符串,并且进行输出。

解决后的源代码:

#include <stdio.h>int main(void)
{int i;char str[6] = "hello";char reverse_str[6] = "";printf("%s\n", str);for (i = 0; i < 5; i++)if (str[i] != '\0')reverse_str[5-i-1] = str[i];printf("%s\n", reverse_str);return 0;
}

最后,倒转后的字符串正确输出。
正确输出结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“机器人之夜”看猎豹跑得快还是五款机器人价格降得快?“鸿门宴”正式上演

来源&#xff1a;机器人大讲堂3 月 21 日&#xff0c;猎豹移动&#xff08;NYSE: CMCM&#xff09;联合旗下人工智能公司猎户星空在北京水立方举行“猎豹3.21机器人之夜”发布会&#xff0c;发布自主研发的猎户机器人平台Orion OS&#xff0c;并推出五款全系列机器人产品&#…

mysql sysbench_详解MySQL基准测试和sysbench工具

一、基准测试简介1、什么是基准测试数据库的基准测试是对数据库的性能指标进行定量的、可复现的、可对比的测试。基准测试与压力测试基准测试可以理解为针对系统的一种压力测试。但基准测试不关心业务逻辑&#xff0c;更加简单、直接、易于测试&#xff0c;数据可以由工具生成&…

windows 堆栈溢出简易测试代码

环境&#xff1a;windows xp sp2 vc 6.0 Code1#include <stdio.h> 2 3int fun2() 4{ 5 printf("-------------Get privilege!---------\n"); 6 getchar(); 7 return 0; 8} 910int fun1()11{12 int iRet 0;13 int *pRet &iRet;14 pRet…

数字电路中的Single-Bit跨时钟域设计

数字电路中的Single-Bit跨时钟域设计同步时钟&异步时钟的定义Metastable&#xff08;亚稳态&#xff09;Metastable的产生原因Setup / Hold Requirement的真正原因Metastable造成的问题跨时钟域同步设计跨时钟域处理目标Single-bit的Clock Domin Crossing (CDC) 电路Single…

《Nature》重磅 | 研究员利用机器学习发现近 6000 种未知病毒

作者&#xff1a;李雨晨《Nature》杂志近日发布消息称&#xff0c;研究人员利用人工智能发现了近6000种未知的病毒。这项工作是在3月15日由美国能源部(DOE)组织的一次会议上提出的&#xff0c;它展示了一种探索地球上巨大而未知的病毒多样性的新工具。从人类健康到垃圾降解&…

mysql limit to hosts matching_MySQL 用户访问限制 -- Host Match Limit

笔者前几日在做数据库迁移的时候&#xff0c;发现了一个挺有意思的小东西&#xff1a;数据库访问限制(Host Match limit),简单地翻阅了下给官方资料&#xff0c;发现这个东西应用场景其实非常广泛&#xff0c;只是我们采用了其他可能没有原生数据库带的Access Limit 功能好地方…

数字电路中的Multi-bits跨时钟域设计

数字电路中的Multi-bits跨时钟域设计跨时钟域同步设计跨时钟域处理目标Multi-bits的Clock Domin Crossing (CDC) 电路设计1-bit "Guard" 信号同步multi-bits数据其他的Multi-bits跨时钟域同步设计跨时钟域电路的仿真验证跨时钟域同步设计 跨时钟域处理目标 在跨时钟…

ACM公布2017年图灵奖,大卫·帕特森和约翰·轩尼诗获奖

来源&#xff1a;网络大数据刚刚&#xff0c;美国计算机协会(ACM)宣布 John L. Hennessy 和 David A. Patterson 荣获 2017 年图灵奖。目前这两位学者都供职于谷歌&#xff0c;前者是谷歌母公司 Alphabet 的董事会主席&#xff0c;后者任谷歌杰出工程师&#xff0c;致力于研究机…

Java加密与解密的艺术~DES实现

密钥长度与安全性成正比&#xff0c;但Java仅支持56位密钥长度&#xff0c;作为补充&#xff0c;Bouncy Castle 提供64位密钥长度支持。在此基础上配合不同填充方式&#xff08;如PKCS5Padding&#xff0c;PKCS7Padding&#xff09;&#xff0c;可显著提高加密系统的安全性。 D…

YOLOv8改进 | 主干篇 | 利用SENetV2改进网络结构 (全网首发改进)

一、本文介绍 本文给大家带来的改进机制是SENetV2&#xff0c;其是2023.11月的最新机制(所以大家想要发论文的可以在上面下点功夫)&#xff0c;其是一种通过调整卷积网络中的通道关系来提升性能的网络结构。SENet并不是一个独立的网络模型&#xff0c;而是一个可以和现有的任何…

Linux学习路线及网络编程经典书籍

linux学习资源整理&#xff1a;https://zhuanlan.zhihu.com/p/22654634 Linux初学者(学习资料)&#xff1a;https://zhuanlan.zhihu.com/p/21723250 知乎 - 你是如何学习 Linux 编程的&#xff1f;&#xff1a;https://www.zhihu.com/question/20730157 如果让你推荐一本 Linux…

在Windows 7解决GAC错误

调试一网站源代码出现下面的错误 错误 1 Could not load file or assembly Microsoft.ReportViewer.WebForms, Version8.0.0.0, Cultureneutral, PublicKeyTokenb03f5f7f11d50a3a or one of its dependencies. The system cannot find the file specified. D:\3layerhotel\WebS…

CVPR 2018 | 腾讯AI Lab入选21篇论文详解

来源:腾讯AI实验室近十年来在国际计算机视觉领域最具影响力、研究内容最全面的顶级学术会议CVPR&#xff0c;近日揭晓2018年收录论文名单&#xff0c;腾讯AI Lab共有21篇论文入选&#xff0c;位居国内企业前列&#xff0c;我们将在下文进行详解&#xff0c;欢迎交流与讨论。去年…

Java加密与解密的艺术~DESede实现

DESede 实现 /*** 2009-10-5*/ package org.zlex.chapter07_2;import java.security.Key;import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec;/*…

推荐!神经进化才是深度学习未来的发展之路!

来源&#xff1a;全球人工智能过去几年时间里&#xff0c;我们有一个完整的团队致力于人工智能研究和实验。该团队专注于开发新的进化计算方法&#xff08;EC&#xff09;&#xff0c;包括设计人工神经网络架构、构建商业应用程序&#xff0c;以及使用由自然进化激发的方法来解…

linux 命令:ping、fping、gping、hping3、tracert、traceroute

From&#xff1a; Nmap、Netcat、Hping3工具对比&#xff1a;http://www.2cto.com/article/201210/158961.html ​hping3 命令&#xff1a;http://man.linuxde.net/hping3 示例&#xff1a;Testing firewall rules with Hping3 &#xff1a;https://www.docin.com/p-74538211…

Java加密与解密的艺术~数字签名~模型分析

甲方作为消息的发送方&#xff0c;乙方作为消息的接收方。假设甲乙双方在消息传递之前已经指定了要使的数字签名算法&#xff08;如RSA算法&#xff09;。为完成签名验证&#xff0c;甲乙双方需要以下操作&#xff1a; 1&#xff09;、由消息发送方&#xff08;甲方&#xff09…

excel概率密度函数公式_标准正态分布密度函数公式

展开全部标准正态分布密度函数公式&#xff1a;正态曲线呈钟型62616964757a686964616fe58685e5aeb931333366306532&#xff0c;两头低&#xff0c;中间高&#xff0c;左右对称因其曲线呈钟形&#xff0c;因此人们又经常称之为钟形曲线。若随机变量X服从一个数学期望为μ、方差为…

2017-2018中国物联网产业全景图谱报告——物联网对产业深度变革已开启

来源&#xff1a;物联网智库丨公众号如果说2016年里物联网的产业生态各种要素已具备&#xff0c;那么2017年就是物联网对于国民经济产业变革的规模效应初显的一年&#xff0c;可以说是物联网对产业变革的元年。在这一过程中&#xff0c;通过二维生态图谱去了解过去一年的进展不…

Java加密与解密的艺术~数字签名~RSA实现

RSA 实现 /*** 2008-6-11*/ package org.zlex.chapter09_1;import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import …