#include<stdio.h>
#include<string.h>
void Reverse(char str[10],int n){ //逆置
char temp[10]={0};
int k=0;
for(int i=n-1;i>=0;i--){
temp[k]=str[i];
k++;
}//end for
strcpy(str,temp);
}//end Reverse
void main(){ //反序输出字符串
char str[10]={0};
gets(str);
Reverse(str,10);
puts(str);
}
上述代码输出结果如下
发现可以完成逆序输出但是输出结果却不对多了一些字符,进行单步调试发现
用汇编语言调试下,发现其在初始化的时候就已经产生了
我们都知道在C语言中字符串是以'\0'结尾的,我将代码修改如下
然后程序就可以正常运行了。
究其原因应该是编译器没有检测到字符串结束所造成的。