【发布时间】:2017-10-23 15:55:16
【问题描述】:
这是我的代码中发生这种情况的部分......无论我在 printf 的帮助下打印什么,它的输出都会重复 3 次,并且该值正在进入路径变量
char *path;
char buf[1024];
struct group grp;
struct group *grpt;
path=strdup(pointer);
while((sd=readdir(dp))!=NULL)
{ if(sd->d_name[0]=='.')
continue;
strcat(path,"/");
strcat(path,sd->d_name);
stat(path, &my_stat);
printf("%s \t ",sd->d_name);
printf("\n");
int x= (int) (strlen(path) - strlen(sd->d_name));
path[x-1]='\0';
path;
}
【问题讨论】:
-
path=strdup(pointer); [...] strcat(path,"/");strdup() 得到什么,都没有空间来附加一些东西。 -
您需要精确管理您的存储。
path由strdup分配,您必须假设它只包含足够的存储空间来存储被复制的字符串(以及终止的空字节)。除非您知道它足够大,否则您不能将其用于其他用途。