How can I assign third character to fourth character?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char a[50];
int i,l,temp;
setbuf(stdout,NULL);
printf("enter a string");
scanf("%s",a);
l=strlen(a);
for(i=0;i<=l/2;i ){
temp=a[i];
a[i]=a[l-i-1];
a[l-i-1]=temp;
}
printf("%s",a);
return EXIT_SUCCESS;
}
output:
enter a stringamalks
skalma
CodePudding user response:
Your immediate problem is that your loop is execuing one more time than you expect.
Assuming input is "amalks"
.. and therefore l
is 6
for(i=0;i<=l/2;i )
goes
i = 0; // swap a and s
i = 1; // swap m and k
i = 2; // swap a and l
i = 3; // 3 <= 6/2 // swap l and a
CodePudding user response:
The reason of the problem is the incorrect condition in the for loop
for(i=0;i<=l/2;i ){
^^^^^^
When l
is an even number then you have that i
will be equal to l / 2
and the expression a[l-i-1]
will be equivalent to a[l-l / 2-1]
that is the same as a[l /2 - 1]
.
Change teh condition of the loop the following way
for(i=0;i < l/2;i ){
^^^^^^
Pay attention to that as the function strlen
has the return size_t
then the variables l
and i
also should have the type size_t
.
Ans the call of scanf
should look either like
scanf("Is",a);
or like
scanf("I[^\n]",a);
to avoid the array memory overflow.