问题:
令字符串倒序,且不能用计算字符的函数。如:“abcde ” 输出“edcba ” 。
思路:
- 编写一个函数,让开头和结尾两两交换,即创建两个指针,一个左指针,一个右指针,进行交换数值。交换完后左指针后移即往中间靠+1,右指针前移,也往中间靠-1;
- 直到左指针等于右指针,交换完毕。
- 改变主函数内实际数值,那么交换函数需要传数组地址。
- 令不让用strlen函数,那么自己写一个字符计数器即可。
代码如下:
#include <stdio.h>
//编写函数,令字符串逆序输出。不能用计算字符的函数
int my_strlen(char *a)
{
int count =0;
while(*a != '\0')//如果没有读到\0,默认\0前为一个字符
{
count++;
a++;
}
return count;
}
void nixu(char *a)
{
int left =0; //左指针
int right = my_strlen(a)-1; // 右指针
while(left < right)
{
char temp =a[left]; //交换
a[left] = a[right];
a[right] = temp;
left++;
right--;
}
}
int main()
{
char a[]="abcdefg";
nixu(a);
printf("%s",a);