首页 > 其他分享 >字符逆序改错题,面试中经常遇到,本人已经遇到两次!!

字符逆序改错题,面试中经常遇到,本人已经遇到两次!!

时间:2023-10-20 12:23:38浏览次数:39  
标签:pS pSrc 遇到 iLen 改错题 char pD pDest 逆序

题目:请找出下面代码的所有错误,说明:一下代码是把一个字符串倒序,如"abcd"倒序为"dcba",以下是引用的代码

 1 #include "string.h" 
 2 main()
 3 {
 4     char* pSrc = "hello,world";
 5     char* pDest = NULL;
 6     int iLen = strlen(pSrc);
 7     pDest = (char*)malloc(iLen);
 8     char* pD = pDest;
 9     char* pS = pSrc[iLen];
10     while (iLen-- != 0)
11     {
12         pD++ = pS--;
13     }
14     printf("%s", pDest);
15     return 0;
16 }

自己的回答,不对的请大家补充指正。

 

错误:第1行:" "包含的是自定义头文件 ,strlen函数包含头文件<string.h> ,malloc函数使用要包含头文件<stdlib.h> ,printf函数要包含头文件<stdio.h>

     第2行:main  要有返回值类型 int

   第7行:由于字符串是以'\0'结尾的,所以在申请内存空间要iLen+1

   第9行:题目中是用数组里的元素给地址赋值,要改为pS=&[iLen -1] ,因为逆序不是从最后的'/0'开始,而是从'd'开始,一共有11个字符,'d'字符的下标为10

   第12行:那是地址之间赋值,逆序要的是字符数组里的元素进行赋值,要解引用,*pD++=*pS--;

   跳出while循环后,此时pD指向最后一个地址,因为时字符串,所以要加上'\0',要不然指向的垃圾数据。

  此外,malloc申请的是堆区内存,用完之后要free()进行释放,要不然会导致内存泄漏。

改正后代码如下:

 1 #include <string.h>
 2 #include <stdlib.h>
 3 #include <stdio.h>
 4 
 5 int main()
 6 {
 7     char* pSrc = "hello,world";
 8     char* pDest = NULL;
 9     int iLen = strlen(pSrc);
10     pDest = (char*)malloc(iLen+1);
11     char* pD = pDest;
12     char* pS = &pSrc[iLen-1];
13     while (iLen-- != 0)
14     {
15         *pD++ = *pS--;
16     }
17     *pD = '\0';
18     printf("%s", pDest);
19     free(pDest);
20     return 0;
21 }

 

执行后结果如下:

 

标签:pS,pSrc,遇到,iLen,改错题,char,pD,pDest,逆序
From: https://www.cnblogs.com/py369/p/17776783.html

相关文章

  • 项目开发中遇到的问题总结
    1、echarts图表问题数据库中存储结构为横向一条数据包含体重,身高,血糖血压,添加事件等数据而前端需要纵向以属性为y轴,事件为纵轴,分别产生多张表格。需要前端使用javascript进行遍历,使用到了map方法this.status=response.data.dataconsole.log(this.status)constxData=thi......
  • git提交时遇到的一些报错或提示框问题
    一、执行gitcommit时,弹出提示关键字为pre-commit并终止提交,如何解决?1、打开.git文件夹--->hooks,删除其中的pre-commit文件即可(如果没有.git文件,尝试以下操作)2、通过命令忽略pre-commit文件:gitcommit--no-verify–m"备注" 原因:pre-commit 钩子惹的祸,在通过 gitcommi......
  • win下 remix安装 遇到很多问题,
    npminstall-gremix-ide 安装成功npminstallremixd-g安装失败,npminstall-g@remix-project/remixd安装成功,得益于这篇文章,从零开始学区块链dapp开发之remix安装-知乎--https://zhuanlan.zhihu.com/p/453311457remixd-sF:\Projects\XuNiProj\EOS-EVM\learn0......
  • 整型数组逆序
    整型数组逆序由于int型数组没有实现comparator接口,所以不支持逆序排序,所以我们建数组的时候就建成Integer型就好了Scannerin=newScanner(System.in);inttarget=Integer.parseInt(in.nextLine());String[]split=in.nextLine().split("");Integer[]arr=n......
  • docker部署elasticsearch 遇到FileSystemException 报错
    Exceptioninthread"main"java.nio.file.:/usr/share/elasticsearch/config/elasticsearch.yml.vxt5sWMES_eRFvPQPfckLQ.tmp->/usr/share/elasticsearch/config/elasticsearch.yml:Deviceorresourcebusy atjava.base/sun.nio.fs.UnixException.trans......
  • 【Azure Logic App】使用Outlook.com发送邮件遇到429报错
    问题描述在LogicApp中使用Outlook.com组件发送邮件,遇见了outlookconnection报429的错误{"error":{"code":"ErrorExceededMessageLimit","message":"Cannotsendmail.DailyMessage/Recipientlimitexceeded.Followtheinstructionsinyo......
  • 【Azure Logic App】使用Outlook.com发送邮件遇到429报错
    问题描述在LogicApp中使用Outlook.com组件发送邮件,遇见了outlookconnection报429的错误{"error":{"code":"ErrorExceededMessageLimit","message":"Cannotsendmail.DailyMessage/Recipientlimitexceeded.Followtheinstructionsinyour......
  • 解决Matlab遇到的svmtrain (line 234) Y must be a vector or a character array.
    解决Matlab遇到的svmtrain(line234)Ymustbeavectororacharacterarray.在使用MATLAB进行SVM分类器训练时,有时会出现以下错误提示:svmtrain(line234)Ymustbeavectororacharacterarray.这个错误是由于目标变量Y的类型不正确导致的。本文将介绍如何解决这个问题......
  • 遇到系统风控审核升级维护导致注单存在异常不给提款要怎么办?
    尊敬的读者,我们深知您在网上的每一分钱都来之不易,因此我们这篇文章将为您解决一个非常关键的问题:当您遇到提款受限以及系统升级维护、注单异常等复杂情况时,如何保护自己的利益并尽快恢复正常的提款流程?首先,让我们明确一个重要的事实:当您遇到系统升级维护或注单异常时,第一步应该是保......
  • PostgreSql使用中遇到的问题
    PostgreSql使用中遇到的问题:持续更新注意:pq中null和空字符串是完全没啥关系的。如果要判断字段是否有值,在不确定是null或者是空字符串时,就用length(field)>01.如果ddl中定义的字段名是大写的,那么查询字段名就要带""  eg:SELECT"LegalOrgID","PID","LegalOrgSNam......