So this course I'm doing wants us to play around with memory management and pointers. I'm not really fully understanding them.
I keep getting a error:
Segmentation fault (Core dumped)
Apparently I don't have access to memory?
It's something wrong in my slen function?
/*
In these exercises, you will need to write a series of C functions. Where possible, these functions should be reusable (not use global variables or fixed sized buffers) and robust (they should not behave badly under bad input eg empty, null pointers) .
As well as writing the functions themselves, you must write small programs to test those functions.
- Remember, in C, strings are sequences of characters stored in arrays AND the character sequence is delimited with '\0' (character value 0).
----------------------------------------------------
1) int slen(const char* str)
    which returns the length of string str [slen must not call strlen - directly or indirectly]
*/
#include <stdio.h>
#include <stdlib.h>
/* Returns the length of a given string */
int slen(const char* str) {
    int size = 0;
    while(str[size] != '\0') {
        size++;
    }
    return size;
}
/*
2) char* copystring(const char* str)
    which returns a copy of the string str. [copystring must not call any variant of strcpy or strdup - directly or indirectly]*/
char* copystring(const char* str) {
    int size = slen(str);
    char *copy = (char*) malloc (sizeof(char) * (size + 1));
    copy[size] = '\0';
    printf("before loop");
    int i = 0;
    while (*str != '0') {
        copy[i++] = *str++;
    }
    return copy;
}
int main() {
    char *msg = NULL;
    printf("Enter a string: ");
    scanf("%s", &msg);
    int size = slen(msg);
    //printf("The length of this message is %d.", size);
//  printf("Duplicate is %s.", copystring(msg));
    // Reading from file
}
 
     
    