关于在用二级指针时遇到的问题#include <stdio.h!

在用二级指针时遇到的问题

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
int main()
{
    int n;
    scanf("%d", &n);
    char** HC = (char**)malloc(sizeof(char*) * (n+1));
    assert(HC);
    for (int i = 1; i <= n; i++)
    {
        char* code = (char*)malloc(sizeof(char) * (n+1));
        assert(code);
 
        code[n] = '\0';
        int j;
        for (j = n-1; j >4; j--)
        {
            code[j] = 'a';
        }
        HC[i] = (char*)malloc(sizeof(char) * (n-j));
        assert(HC[i]);
        strcpy(HC[i], &code[j+1]);
    }
    for (int i = 1; i <= n; i++)
    {
        printf("%s\n", HC[i]);
    }
    
}

img


这三个警告实在不知道错哪里了

img

怎么样才能消除警告