递归反转字符串,好像又是指针方面出现问题了


int my_strlen(char* str)
{
    int i = 0;
    int count = 0;
    for (i = 0; *(str + i) != '\0'; i++)
    {
        count++;
    }
    return count;
}
void reservestr(char arr[])
{
    int r = my_strlen(arr);
    char i = arr[0];
    arr[0] = arr[r -1];
    arr[r - 1] = '\0';
    if (r > 1);
    {
        
        reservestr(arr + 1);
    }
    arr[r - 1] = i;
}
int main()
{
    char arr[10] = "123456789";
    reservestr(arr);
    int i = my_strlen(arr);
    printf("%s\n", arr);
    printf("%d", i);
    return 0;
}

img

这是报错了。




循环分号打错地方所以死循环了
有帮助望采纳

#include <stdio.h>
int my_strlen(char *str)
{
    int i = 0;
    int count = 0;
    for (i = 0; *(str + i) != '\0'; i++)
    {
        count++;
    }
    return count;
}
void reservestr(char arr[])
{
    int r = my_strlen(arr);
    // printf("%d\n", r);
    char i = arr[0];
    arr[0] = arr[r - 1];
    arr[r - 1] = '\0';
    if (r > 1)
    {
        reservestr(arr + 1);
    }
    arr[r - 1] = i;
}
int main()
{
    char arr[10] = "123456789";
    reservestr(arr);
    int i = my_strlen(arr);
    printf("%s\n", arr);
    printf("%d", i);
    return 0;
}

哎,最近总是犯这种错误。