c语言关于字符串连接函数strcat,连接之后出现乱码

结果不应该是a/home/ 吗? 前面三个是什么东西= =

int main(){
char argv[]={"/home/","a"};
char *p=argv[0];
char *filename=argv[1];
puts(filename);puts(p);
char *r=(char
)malloc(sizeof(char)*512);
strcat(r,filename);
strcat(r,p);
puts(r);
}
图片说明

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char *argv[]={"/home/","a"};
    char *p=argv[0];
    char *filename=argv[1];
    puts(filename);puts(p);
    char *r=(char *)malloc(sizeof(char)*512);
    memset(r, 0, 512); //这里
    strcat(r,filename);
    strcat(r,p);
    puts(r);

   return 0;
}

图片说明

如果问题得到解决,麻烦点下我回答右边的采纳,谢谢

你r虽然分配空间了但还要把字符串置为空串,才能用,其他地方也有问题

#include<stdio.h>
#include<malloc.h>
#include<string.h>
int main() {
    char argv[2][20] = { "/home/","a" };
    char *p = argv[0];
    char *filename = argv[1];
    puts(filename); puts(p);
    char *r = (char*)malloc(sizeof(char) * 512);
    r[0] = '\0';
    strcat(r, filename);
    strcat(r, p);
    puts(r);
    return 0;
}