《C和指针》——6.3
题目:
编写一个函数,把参数字符串中的字符反向排列。
函数原型:
void reverse_string(char *string);
要求:
使用指针而不是数组下标
不要使用任何C函数库中用于操纵字符串的函数
不要声明一个局部数组来临时存储参数字符串
解答代码:
#include <stdio.h> void reverse_string(char *string) { int i, n=0; while (*(string+n) != ‘\0‘) //计算字符串中字符的个数 n++; n--; //字符个数n作为索引号时要减1,即从0到n-1 if (n > 0) //字符个数小于等于1时没有必要反转 { for (i=0; i<=(n/2); 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 0; }
注:
1、先计算字符串中非‘\0‘字符的个数
2、首位字符轮流交换
时间: 2024-10-11 08:20:13