I'm new in programming in C and now I'm studying strings.
My question is: if I allocate a string using malloc (as in the code below), is the NULL character automatically inserted at the end of the string?
I find an answer in another question here, and it seems that the NULL character is not automatically included.
But here comes the problem: I know functions like strlen don't work if there isn't the NULL character, and in this code I use it and it works. So I think there is \0 at the end of my string, even if I don't write it anywhere.
What's the answer?
Here's the code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv) {
    char *stringa1;
    int n;
    int i;
    printf("How many characters in the string? ");
    scanf("%d", &n);
    stringa1 = (char*) malloc(n*sizeof(char));
    printf("Insert the string: ");
    scanf("%s", stringa1);
    free(stringa1);
    return 0;
}
 
     
     
     
     
     
     
    