I want to print a string backwards. But my code seems to count down the alphabet from the last letter in the array to the first letter in the array instead of counting down
#include <stdio.h>
#include <stdlib.h>
/*
*
*/
int main(int argc, char** argv) {
int i;
char letters[3]="";
printf("Enter three letters!");
scanf("%s",letters);
for(i=3;i>=0;i--){
printf("%c", letters[i]);
}
return (EXIT_SUCCESS);
}
You want to print word[x]
(the xth character in the array) instead of x
(the xth character in the character set).
You also want to be counting down indexes, not characters.
for(x=end, x >= 0; x--)
printf("%c", word[x]);
//Change end to int type and modify your for loop as shown.
#include <stdio.h>
#include <string.h>
int main(void)
{
char word[50];
int end;
char x;
printf("Enter a word and I'll give it to you backwards: ");
scanf("%s", word);
end = strlen(word) - 1;
for (x = end; x >= 0; x--)
printf("%c",word[x] );
return 0;
}
What you have loops between the array element values. You want to loop between the array indexes. Update your loop to the following:
for (x = end; x >= 0; --x) {
printf("%c", word[x]);
}
Note that this goes from the last index to zero and output the character at that index. Also a micro-optimization in the for loop using pre-decrement.
In your loop, x
is the index into the character array comprising word
. So x
should change from end
to 0
, and referencing the array should be as word[x]
.
You're calling array values and not the specific index.
for(x = end; x >= 0; x--) { printf("%c", word[x]); }