我开始编程.我写了这个小程序来反转一个字符串.但是如果我试图反转长度小于5个字符的字符串,那么它会输出错误的字符串.我似乎无法找到什么错误.
#include<stdio.h>
#include<string.h>
int main()
{
char test[50];
char rtest[50];
int i, j=0;
printf("Enter string : ");
scanf("%s", test);
int max = strlen(test) - 1;
for ( i = max; i>=0; i--)
{
rtest[j] = test[i];
j++;
}
printf("Reversal is : %s\n", rtest);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您没有以0结束反转字符串.(C中的所有字符串都以0结尾)
在这种情况下,printf将(可能,取决于rtest数组的单位化内容)创建缓冲区溢出.
rtest[max+1]=0;
在for循环之后添加一个,一切都应该没问题.否则你可以声明char rtest[50] = {0}
(这将用0s初始化整个数组).