# Rewriting a function using pointers

I have an original code that searches through "s" for a specific character then stores this into a pointer (otherwise, null). This is the original code:
Code:
const char* findMe(const char s[], char c)
{
for (int k = 0; s[k] != 0; k++)
if (s[k] == c)
return &s[k];

return NULL;
}
I need to rewrite it so it does the same thing but does NOT use any square brackets nor any integer variable. Here is what I have, but I am unsure of whether or not it is entirely correct;
Code:
const char* findMe(const char* s, char c)
{
while (*s != '\0')
{
if (*s == c)
return &s;
}
return NULL;
}

## Answers and Replies

Related Engineering and Comp Sci Homework Help News on Phys.org
mgb_phys
Homework Helper
You don't need "while (*s != '\0')" just use " while (*s)"
You don't increment s you you are only checking the first character - it will get stuck in a loop.
Do you mean to return &s? remember S is already a pointer

Mark44
Mentor
Why not copy the control structure of the first example? IOW, use a for loop instead of switching to a while loop.

If s is declared as an array of char like this (the 30 is not relevant) -
char s[30];

- you can access the character at index n by array notation (s[n]) or by pointer notation ( *(s + n) ).

You don't need "while (*s != '\0')" just use " while (*s)"
You don't increment s you you are only checking the first character - it will get stuck in a loop.
Do you mean to return &s? remember S is already a pointer
i am trying to read in the whole thing, not just the first character... why is it that you only need *s and not *s != '\0'?? i thought you needed that to ensure that it gets to the zero byte/the end of the string

Mark44
Mentor
The two expressions are equivalent.
while (*s) - means "while *s is any character other than '0'