找错解决思路
找错
------解决方案--------------------
------解决方案--------------------
跟上面差不多, 主要多一个malloc检查返回值要检查.
//请找出下面代码中的所有错误
说明:以下代码是把一个字符串倒序,如“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;
}
C++
------解决方案--------------------
int main()
{
char* src = "hello,world ";
int len = strlen(src);
char* dest = (char*)malloc(len+1);//要为\0分配一个空间
char* d = dest;
char* s = &src[len-1];//指向最后一个字符
while( len-- != 0 )
*d++=*s--;
*d = 0;//尾部要加\0
printf( "%s\n ",dest);
free(dest);// 使用完,应当释放空间,以免造成内存汇泄露
return 0;
}
------解决方案--------------------
跟上面差不多, 主要多一个malloc检查返回值要检查.
//请找出下面代码中的所有错误
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
#include "string.h "
main()
{
char*src= "hello,world ";
char* dest=NULL;
int len=strlen(src);
dest=(char*)malloc(len); // 错误1: 应该: len+1
char* d=dest; // 错误2: 没有检查返回值是否为NULL
char* s=src[len]; // 错误3: 应该 str+len-1
while(len--!=0) // 建议1: len-- > 0
d++=s--; // 错误4: 应该: *d++ = *s--
printf( "%s ",dest); // 错误5: 指针未设置0: *d = '\0'
return 0; // 错误6: d内存未释放: free(dest);
}