Reputation: 31
I'm trying to print a reversed string/array. I've used the following code and it seems to be able to give my second array, revString
, values in the correct order from the first array string
. I am also able to print individual characters in both arrays, and I'm able to print the entire string of the first array. However the revString
array doesn't print at all. I'm wondering if I am missing a huge point here.
void reverseString(char string[]) {
int i = strlen(string);
int i_2 = 0;
revString arrayet
char revString[i + 1];
char *character;
while (i > -1) {
character = &string[i];
revString[i_2] = *character;
printf("%c", revString[i_2]);
i = i - 1;
i_2 = i_2 + 1;
}
revString[i_2] = '\0';
printf("%d\n", i_2);
printf("%s", revString);
}
The code gives now the following output with example string "Hello World"
;
dlrow olleH13
As you can see the final printf
statement doesn't do anything
Upvotes: 0
Views: 129
Reputation: 144695
Your code reverses the string string
including the null terminator at string[i]
. The resulting array starts with a null terminator, hence printf
outputs nothing.
Here is a modified version:
void reverseString(char string[]) {
int i = strlen(string);
int i_2 = 0;
char revString[i + 1];
char character;
while (i > 0) {
i = i - 1;
character = string[i];
revString[i_2] = character;
//printf("%c", revString[i_2]);
i_2 = i_2 + 1;
}
revString[i_2] = '\0';
printf("%d\n", i_2);
printf("%s", revString);
}
Output:
11
dlrow olleH
Upvotes: 1
Reputation: 17
In C language indexing is 0 based. so, if you make a string of 10 length, the last character will be at index 9.
In your code, when you are assigning characters to revString, your code is trying to access string[len].
your code should be like this..
int i = strlen(string) - 1;
Upvotes: 2