Rewriting a function using pointers

  • Thread starter magnifik
  • Start date
  • #1
360
0
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

  • #2
mgb_phys
Science Advisor
Homework Helper
7,774
13
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
 
  • #3
34,017
5,672
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) ).
 
  • #4
360
0
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
 
  • #5
34,017
5,672
The two expressions are equivalent.
while (*s) - means "while *s is any character other than '0'
 

Related Threads on Rewriting a function using pointers

Replies
25
Views
4K
  • Last Post
Replies
3
Views
2K
  • Last Post
Replies
17
Views
799
Replies
7
Views
3K
  • Last Post
Replies
11
Views
738
Replies
8
Views
3K
  • Last Post
Replies
8
Views
2K
  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
8
Views
1K
Top