Reputation: 55
I wrote this function to reverse a string in C, but when switching characters in the string the program crashes. I have no idea what's causing it, so any help would be appreciated.
void reverse(char s[])
{
char c;
int i;
int j;
for (i = 0, j = (strlen(s) - 1); i < j; i++, j--)
{
c = s[i];
s[i] = s[j]; //An error occurs here
s[j] = c;
}
printf("%s", s);
}
main()
{
reverse("Example");
}
Upvotes: 0
Views: 666
Reputation: 1
You need to take character pointer as a parameter in your function:
Void reverse (char *ptr)
{
// ...
}
And perform operation on pointer.
Upvotes: -1
Reputation: 901
read this for more information What is the difference between char s[] and char *s?
Another link https://stackoverflow.com/questions/22057622/whats-the-difference-structurally-between-char-and-char-string#22057685
this should fix it.
main()
{
char array[] = "Example";
reverse(array);
}
when you do reverse("Example")
this is the same as
char *string = "Example";
reverse(string) //wont work
The links should clarify your doubts from here.
Upvotes: 3
Reputation: 15121
"Example"
is a string literal, which usually means you cannot change it.
Please try this:
char str[] = "Example";
reverse(str);
Upvotes: 1
Reputation:
This should work:
#include<string.h>
int main()
{
char str[100], temp = 0;
int i = 0, j = 0;
printf("nEnter the string :");
gets(str);
i = 0;
j = strlen(str)-1;
while(i<j)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
i++;
j--;
}
printf("nReverse string is :%s",str);
return(0);
}
Upvotes: 0