Linux上C编程关于遍历的有关问题

Linux下C编程关于遍历的问题
为什么递归调用dir_scan这个函数的时候加了一个@;譬如你命令行参数输入一个路径ab,第一次是调用是好的,递归调用的时候就给路径加了@,就变成@ab/abc.求指导
void dir_scan(char* path)
{
        struct stat s;
        DIR *dir;
        struct dirent *dt;
        char dirname[1024];
        lstat(path, &s);
        strcpy(dirname + strlen(dirname), path);
        if (S_ISDIR(s.st_mode))
        {
            dir = opendir(dirname);
            while ((dt = readdir(dir)) != NULL)
{
if (dt->d_name[0] == '.')
{
continue;
}
printf("%s\n",dirname);
snprintf( dirname, 1024,"%s/%s", path, dt->d_name );
printf("%s\n",path);
printf("%s\n",dirname);
            
            dir_scan(dirname);
}
closedir(dir);
        }else{
                printf("%s\n",dirname);
        }
}
int main(int argc,char* argv[])
{
                char* path = argv[1];
                dir_scan(path);
}
------解决方案--------------------
        char dirname[1024];
        lstat(path, &s);
        strcpy(dirname + strlen(dirname), path);

感觉dirname都没初始化
------解决方案--------------------
楼主为什么不贴上完整的代码,后面人看的时候直接执行一下,会更清晰。
------解决方案--------------------
引用:
char dirname[1024];
        lstat(path, &s);
        strcpy(dirname + strlen(dirname), path);

感觉dirname都没初始化


+1
------解决方案--------------------
dirname没有初始化。
strcpy(dirname + strlen(dirname), path);这句在干嘛?