1.求字符串长度
1.1采用strlen
#include<stdio.h>
int main()
{
char arr[] = "abcdef";
int num = strlen(arr);
printf("%d\n", num);
return 0;
}
1.2采用函数非递归
#include<stdio.h>
int my_strlen(char* arr)
{
int count = 0;
while (*arr != '\0')
{
count++;
arr++;
}
return count;
}
int main()
{
char arr[] = "abcdef";
int count = my_strlen(arr);
printf("%d\n", count);
return 0;
}
1.3采用函数递归
#include<stdio.h>
int my_strlen(char* arr)
{
if (*arr != '\0')
{
return 1+my_strlen(arr + 1);
}
else
{
return 0;
}
}
int main()
{
char arr[] = "abcdef";
int count = my_strlen(arr);
printf("%d\n", count);
return 0;
}
2.求字符反向排列(不是逆序)
2.1采用非递归
//数组
#include<stdio.h>
void fore_strlen(char* arr)
{
int left = 0;
int right = strlen(arr) - 1;
int tmp = 0;
while (left < right)
{
tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
int main()
{
char arr[] = "abcdef";
fore_strlen(arr);
printf("%s\n", arr);
return 0;
}
//指针
#include<stdio.h>
void fore_strlen(char* arr)
{
int left = 0;
int right = strlen(arr) - 1;
int tmp = 0;
while (left<right)
{
tmp = *(arr+left);
*(arr+left) = *(arr+right);
*(arr+right) = tmp;
left++;
right--;
}
}
int main()
{
char arr[] = "abcdef";
fore_strlen(arr);
printf("%s\n", arr);
return 0;
}
2.2采用递归
#include<stdio.h>
void fore_strlen(char* arr)
{
int len = strlen(arr);
int tmp = *arr;
*arr = *(arr + len - 1);
*(arr + len - 1) = '\0';
if (strlen(arr+1)>= 2)
{
fore_strlen(arr + 1);
}
*(arr + len - 1) = tmp;
}
int main()
{
char arr[] = "abcdef";
fore_strlen(arr);
printf("%s\n", arr);
return 0;
}