If needed , you might run the example code below here:
#include <stdio.h>
#include <string.h>
void foo(char *name);
char bar(char c);
 
int main(int argc, char **argv)
{
    foo("Ashcroft");
    return 0;
}
void foo(char *name)
{
    printf("name = %s\n", name);
    int name_length = strlen(name);
    char code[name_length];
    printf("length of name %d\n", name_length);
    for (int i = 0; i < name_length; i++)
    {
        code[i] = bar(name[i]);
    }
    printf("length of code is %ld\n", strlen(code));
    printf("name is %s\n", name);
}
char bar(char c)
{
    return 'a';
}
Problem
I expected length of code to be the same as length of name,
but somehow the length changes after the for loop.
Output
name = Ashcroft
length of name 8
length of code is 14
name is Ashcroft
Update
tried char code[name_length+1]; but the result is still the same

 
    