initialization of a pointer
I have to write a function,which gets a string,deletes its spaces and returns the result..That's what I did:
char *removespaces(char *s1)
{
char *s2=s1;
int i,j=0;
for (i = 0; i<strlen(s1); i++){
if (s1[i]!=' ') {
s2[j]=s1[i];
}else {
j--;
}
j++;
}
s2[j]=0;
return s2;
}
Is this right???If yes,could you explain me why I have to initialize the pointer *s2 with the first element of the array s1...???If I don't initialize the pointer,or initialize it with something else,I get a segmentation fault...
Re: initialization of a pointer
This has been answered elsewhere.
Re: initialization of a pointer
Re: initialization of a pointer
The issue I have with this is that as well as returning the result, it also changes the original string with which I would not be happy. IMO the definition of the function should be
char *removespaces(const char *s1)
Re: initialization of a pointer
Well, that just a matter of what interface you want, e.g., qsort and std::sort change what they operate on. This could be an advantage if you really want to change the original string since you avoid creating another, and if you don't want, you just make a copy and use that instead.