c-尝试逐字符复制字符串时出现问题



我正试图逐个字符地移动一个字符数组,并将其复制到另一个字符阵列中,直到读取的字符为\,因为我想在未创建地址的情况下创建地址的目录,或者在创建地址的情况下访问地址。

例如:

Adress: dir2/dir3/a

我的算法:

path = dir2
//if dir2 not created make dir2 and change actual directory to dir2
//if created then access dir2 changing the actual directory to dir2
//empty path with memset and keep storing the adress
path = dir3
//repeat...

但当我尝试访问路径时,我会得到最后一个字符,而不是所有的路径字符串

输出:

path0: d
path1: i //Should be di
path2: r //Should be dir
path3: 2 //Should be dir2
path: 2 //Should be dir2

我不知道是否有更有效的方法可以做到这一点,我也不知道如何获得完整的路径字符串,而不是最后一个字符,我在末尾插入了"\0",以防字符串结尾字符出现问题

名称和路径是一个字符[256]变量
代码:

for (i = 0; i < strlen(name); i++) 
{
if(name[i] != '/')
{
path[j] = name[i];
path[i+1] = '';
printf("path%d: %sn", i,path);
}
else
{
path[i] = '';
printf("path: %sn", path);
n = chdir(path);
if(n == ENOENT)
{
n = mkdir(path, 0777);
if (n != 0) 
{
fprintf(stderr, "Failed to make the directory to extract: %sn", strerror(errno));
close(fmypack);
return E_DIR1;
}
chdir(path);
}
else if(n == EACCES)
{
fprintf(stderr, "Failed to access the directory: %s, %sn", path, strerror(errno));
close(fmypack);
return E_DIR2;
}
else if(n != 0)
{
fprintf(stderr, "Unknow error when try to access the directory: %s, %sn", path, strerror(errno));
close(fmypack);
return E_DESCO;
}
memset(path, 0, sizeof path);
j=0;
}

我想我找到了。

path[i] = '';

但路径是使用j作为索引器建立的。

path[j] = '';

应该是正确的。

你错过了j:上的增量

path[j] = name[i];
path[i+1] = '';

应为:

path[j++] = name[i];
path[j+1] = '';

有趣的是,用chdir()一次只做一个组件实际上更快,但你发现这一点的可能性很小。当你有几百个目录时,你可以测量它。

相关内容

  • 没有找到相关文章

最新更新