C语言字符串反转代码错误分析及修正
#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; }
这个代码有两处错误:
-
在 reverse 函数中,没有将左右指针向中间移动,导致死循环。应该加上
left++和right--。 -
在主函数中,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;
}
原文地址: https://www.cveoy.top/t/topic/nRs1 著作权归作者所有。请勿转载和采集!