《C和指针》——6.3
题目:
编写一个函数,把参数字符串中的字符反向排列。
函数原型:
void reverse_string(char *string);
要求:
使用指针而不是数组下标
不要使用任何C函数库中用于操纵字符串的函数
不要声明一个局部数组来临时存储参数字符串
解答代码:
#include <stdio.h> void reverse_string(char *string)
{
int i, n=; while (*(string+n) != '\0') //计算字符串中字符的个数
n++;
n--; //字符个数n作为索引号时要减1,即从0到n-1
if (n > ) //字符个数小于等于1时没有必要反转
{
for (i=; i<=(n/); i++)
{
if (i != (n-i))
{
char p; //字符内容交换
p = *(string+i);
*(string+i) = *(string+n-i);
*(string+n-i) = p;
}
}
}
} int main()
{
char source[] = "ABCDEFGH"; printf("Before reverse:\n%s\n", source);
reverse_string(source);
printf("After reverse:\n%s\n", source); getchar();
return ;
}
注:
1、先计算字符串中非'\0'字符的个数
2、首位字符轮流交换