用指针实现字符串的反序存放

简洁,多种方法,要用TC进行设计!

第1个回答  2020-02-15
看哥哥我的.仅供参考!
法1:
(重新分配空间,
再倒序存放,浪费空间,不好)
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
int
main()
{
char
str[]
=
"hello
world";
char
*ptr
=
NULL;
char
*p
=
(char
*)malloc(50
*
sizeof(char));
char
*tmp
=
p;
int
len
=
0;
len
=
strlen(str);
ptr
=
&str[len
-
1];
while
(len--
!=
0)
{
*tmp++
=
*ptr--;
}
*tmp
=
'\0';
printf("p
=
%s\n",
p);
free(p);
return
0;
}
法2:(开头字符跟结尾字符交换,往中间压缩循环)
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
int
main()
{
char
str[]
=
"hello
world";
char
*start
=
str;
int
len
=
0,
tmp
=
0;
len
=
strlen(str);
while
(len
>=
1)
{
tmp
=
*start;
*start
=
*(start
+
len
-
1);
*(start
+
len
-
1)
=
tmp;
start++;
len
-=
2;
}
printf("str
=
%s\n",
str);
return
0;
}
法3:(同法2)
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
int
main()
{
char
str[]
=
"hello
world";
int
len
=
strlen(str);
char
*start
=
str;
char
*end
=
str
+
len
-
1;
int
tmp
=
0;
while
(start
-
end
<=
0)
{
tmp
=
*start;
*start
=
*end;
*end
=
tmp;
start++;
end--;
}
printf("str
=
%s\n",
str);
return
0;
}
法2和法3类似.比法1好.
相似回答