Вот код
#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();
}
Он работал правильно, когда мы дали ему строку без пробелов:
input: welcome
len: 7
output: emoclew
Когда мы даем ему строку с пробелом:
input: добро пожаловать в этот мир
len: 7
output: некоторые другиеASCII CHARS, что я не видел до сих пор.и "len" снова равно 7
Когда я изменяю следующее утверждение:
scanf ("% s", a) на gets (a);
Я получаю:
вход: добро пожаловать в этот мир
len: 21
вывод: что-то другое.не обратная строка ...
В этом случае «len» правильно, но вывод неправильный.
Что на самом деле происходит?В чем проблема с приведенным выше кодом?