#include <stdio.h> #include <string.h>

void reverse (char* left ,char *right) { char temp = 0; while(left < right) { temp = *left; *left = *right; *right = temp; left++; right--; } }

int main( ) { char arr[100] = { 0 }; gets(arr); int len = strlen(arr); reverse(arr, arr+len-1); printf('%s ',arr ); return 0; }

这个代码有两处错误:

  1. 在 reverse 函数中,没有将左右指针向中间移动,导致死循环。应该加上 left++right--

  2. 在主函数中,printf 函数拼写错误,应该是 printf

修改后的代码如下:

#include <stdio.h>
#include <string.h>

void reverse (char* left ,char *right)
{
    char temp = 0;
    while(left < right)
    {
        temp = *left;
        *left = *right;
        *right = temp;
        left++;
        right--;
    }
}

int main( )
{
    char arr[100] = { 0 };
    gets(arr);
    int len = strlen(arr);
    reverse(arr, arr+len-1);
    printf('%s
',arr );
    return 0;
}
C语言字符串反转代码错误分析及修正

原文地址: https://www.cveoy.top/t/topic/nRs1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录