#include <string.h>
#include <stdio.h>
#include <stdlib.h>
void reverse(int pos, char *str){
int l = strlen(str);
if(pos<(l/2))
{
char ch;
ch = str[pos];
str[pos]=str[l-pos-1];
str[l-pos-1]=ch;
reverse(pos+1,str);
}
}
char* reverseWords(char *a) {
int i=0,j=0, l=0;
char *s, *result;
l = strlen(a);
reverse(0,a);
result = (char*)malloc(sizeof(char)*(l+1));
strcpy(result,"");
for(i=0;i<=l;i++)
{
if(a[i]!=' ' && a[i]!='\0')
s[j++]=a[i];
else{
s[j++]='\0';
reverse(0,s);
strcat(result,s);
if(i!=l)
strcat(result," ");
j=0;
}
}
result[l]='\0';
return result;
} <- At this point I am getting segmentation fault.
int main()
{
char str[]="STRING TO REVERSE";
char *output;
output = reverseWords(str);
printf("%s\n",output);
return 0;
}