请找出下面代码中的所有错误。说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
1#include "string.h"2int
main() 3{4
char*src
= "hello,world";5
char*dest
= NULL;6
intlen
= strlen(src);7
dest
= (char*)malloc(len);8
char*d
= dest;9
char*s
= src[len];10
while
(len-- != 0)11
*d++
= *s--;12
printf("%s",
dest);13
return
0;14
15} |
正确答案: A B C D
第7行要为'\0'分配一个空间
第9行改成char * s = &src[len-1]
第12行前要加上*d = '\0'
第13行前要加上free(dest)释放空间
解析
方法1:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
intmain(){ char*src
= "hello,world"; intlen
= 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);//
使用完,应当释放空间,以免造成内存汇泄露 return0;} |
方法2:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
intmain(){ charstr[]
= "hello,world"; intlen
= strlen(str); chart; for(inti
= 0;
i < len; i++) {
t
= str[i];
str[i]
= str[len - i - 1];
str[len
- i - 1]
= t; } printf("%s",
str); return0;} |
10万+

被折叠的 条评论
为什么被折叠?



