这是代码
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
clrscr();
char a[20],rev[20];
printf("enter the string");
scanf("%s",a);
int len=strlen(a);
for(int i=0;i<len;i++)
{
rev[i]+=a[len-i-1];
}
printf("%d \t \n string is \t %s",len,rev);
getch();
}
Run Code Online (Sandbox Code Playgroud)
当我们给它一个没有空格的字符串时它正常工作:
输入:welcome
len:7
输出:emoclew
当我们给它一个带空格的字符串时:
输入:欢迎来到这个世界
len:7
输出:到目前为止我还没有见过的其他一些ascii字符.并且"len"仅为7
当我更改以下声明时:
scanf("%s",a)得到(a);
我明白了:
输入:欢迎来到这个世界
len:21
输出:不同的东西.不是字符串的反转......
在这种情况下,"len"是正确的,但输出是错误的.
真的发生了什么?上面的代码有什么问题?