I have implemented my own strchr() function in C.
When calling the function and saving the output into a pointer I go ahead and print the stream of chars and the result looks fine. However, after calling a printf(), my stream of chars gets cut off for some reason. Does anyone understand why?
Here is my code:
#include <stdio.h>
#include <string.h>
char *mon_strchr(const char *chaine, int car)
{
        int j = 0, i;
        char *pbuff, buff[256];
        pbuff = buff;
        for (i = 0; chaine[i] != '\0'; i++)
        {
                if ((int)chaine[i] == car)
                        break;
                i++;
        }
        for (i; chaine[i] != '\0'; i++)
        {
                buff[j] = chaine[i];
                j++;
        }
        return pbuff;
}
int main()
{
        const char str[] = "http://www.tutorialspoint.com";
        const char ch = '.';
        char *ret;
        ret = mon_strchr(str, ch);
        printf("%s\n", ret);
        printf("String after |%c| is\n", ch);
        printf("%s\n", ret);
        return (0);
}
And this is the output:
.tutorialspoint.com
String after |.| is
.tutoria
