找错误

来源:互联网 发布:财务金融知乎 编辑:程序博客网 时间:2024/04/30 16:15

4.请找出下面代码中的所有错误,请直接在题目上修改。说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

#include"string.h"   
main()    
{    
  char*src="hello,world";    
  char* dest=NULL;    
  int len=strlen(src);    
  dest=(char*)malloc(len);      
  char* d=dest;    
  char* s=src[len];           
  while(len--!=0)    
     d++=s--;          
  printf("%s",dest);   
  return 0;    

}


1、申请的dest的长度不对,没有考虑‘\0'

2、指针赋值不对,char *s = src[len]。将char类型赋值给char*类型 

3、循环中赋值不对,*d++ = *s--

4、最后在尾部填充'\0'

5、内存泄漏

正确如下:

#include <iostream>#include <cstring>#include <cstdio>#include <cstdlib>using namespace std;int main(){char *src = "hello, world";char *dest = NULL;int len = strlen(src);dest = (char*)malloc(len + 1);char *d = dest;char *s = &src[len - 1];while (len-- != 0) {*d++ = *s--;}*d = 0;printf("%s\n", dest); delete dets; return 0;}

0 0
原创粉丝点击