题目要求:
如:字符串内容为:abcd 逆序后结果:dcba
注意事项:
不能逆序指针指向的常量字符串!因为常量字符串存放在静态区,其内容不能修改。
要使用字符数组
//例如 char* p = "abcd";//不能逆序p指向的内容 复制代码
思路:
1.定义两个指针,一个指向字符串的左边,一个指向字符串的右边。二者指向的字符进行交换。左指针右移,右指针左移
2.当满足left < right 条件则继续交换 不满足则说明二者相遇了,或者left>right了。逆序完成
代码:
void reverse(char* str) { int len = strlen(str); char* left = str;//指向字符串的起始位置 char* right = str + len -1 ;//指向字符串的末尾(\0之前) //当left和right指向同一个字符不需要交换,所以判断条件写成left<=right即可 while (left < right) { //字符交换 char tmp = *left; *left = *right; *right = tmp; //区间缩减 right--; left++; } } int main() { char str[20] = "abcd"; reverse(str); printf("%s\n", str); return 0; }