返回信息流请教版里的大神一个问题,我写了一个程序,在主程序,里读取输入字符,在函数里将输入字符与type比较如果符合,就执行下面程序的这些操作。这些操作就是读取环境变量里的路径,然后opendir,问题在于
第一次输入 type字符,能正确显示path的路径和opendir,结果是理想的。
第二次输入type字符,就只执行一次到printf("33333\n");就没有继续执行,也没有报错
第三次输入type字符,就执行到printf("33333\n");,然后报错,segmentation fault。
这是为啥呢? opendir函数 这里出现什么错误里?
函数是这样紫的
if(strcmp(command,"type")==0)
{
DIR *dir;
struct dirent *ptr;
char *pd=NULL,*h=NULL;
int f=0;
char *tmp;
h=getenv("PATH");
pd=malloc(strlen(h));
strcpy(pd,h);
printf("path1:%s\n",pd);
tmp=strtok(pd,":");//截止环境变量里的字符
while(tmp!=NULL)
{
printf("path:%s\n",tmp);//tmp used to save the subpath
printf("33333\n");
dir=opendir(tmp);/// 问题应该就是在这里卡住
printf("44444\n");
closedir(dir);
printf("55555\n");
tmp=strtok(NULL,":");
printf("tmp:%s\n",tmp);
ptr=NULL;
dir=NULL;
}
printf("66666\n");
free(pd);
pd=NULL;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #84857同步于 2014/12/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求教大神一个opendir函数的问题!!!!!!
flasher
2014/12/26镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
你最后两句的删除和赋值空语句是为了防止内存泄露吗?~!
我有点好奇如果删了这两句话会怎样?!
不一定对啊,只是好奇!
因为不知道if外面的代码,也不能帮lz调试!
【 在 flasher 的大作中提到: 】
: 请教版里的大神一个问题,我写了一个程序,在主程序,里读取输入字符,在函数里将输入字符与type比较如果符合,就执行下面程序的这些操作。这些操作就是读取环境变量里的路径,然后opendir,问题在于
: 第一次输入 type字符,能正确显示path的路径和opendir,结果是理想的。
: 第二次输入type字符,就只执行一次到printf("33333\n");就没有继续执行,也没有报错
: ...................
后面不知道怎么弄又弄好了 是将 if外面的 几个 free的释放内存语句 注释掉了 貌似就没事了 等弄完论文估计还得看看
【 在 xiaohuangren 的大作中提到: 】
: 你最后两句的删除和赋值空语句是为了防止内存泄露吗?~!
: 我有点好奇如果删了这两句话会怎样?!
: 不一定对啊,只是好奇!
: ...................