LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: goletsgo

stat函数的奇怪问题

[复制链接]
 楼主| 发表于 2004-9-3 00:18:19 | 显示全部楼层
哇~~救救我吧:
我把原程序做了如下修改:

  1.         tempstr=argv[1];
  2.         strcat(tempstr,"/");
  3.         while((direntp=readdir(dirp))!=NULL)
  4.         {
  5.                 pathname=tempstr;
  6.                 strcat(pathname,direntp->d_name);
  7.                 //get_file_size_time(pathname);
  8.                 printf("pathname:%s\n",pathname);
  9.         }
复制代码

因为argv[1],tempstr,pathname都是字符串指针,所以用了strcat以后argv[1]的值就变了,第一次输出的是dir/.,第二次就变成了dir/./..,第三次是dir/./../file1,
想了半天也没想通怎么让tempstr的值(argv[1]的值)不变,把tempstr设为const的也不行。
 楼主| 发表于 2004-9-3 00:23:49 | 显示全部楼层
我一开始想:
char const *tempstr;
这样的话tempstr指向的字符串的值就不能被改变,可实际上还是可以变,这是咋回事阿????
发表于 2004-9-3 11:06:27 | 显示全部楼层
弄个临时的buffer保存那个不就行了
不至于非要节省那么一点内存吧
 楼主| 发表于 2004-9-3 12:03:40 | 显示全部楼层
不是想省内存,是因为。。。不知道怎么弄啊,请阁下明示啊
发表于 2004-9-3 12:25:36 | 显示全部楼层
[PHP]
char dirbuf[512];
memset(dirbuf,0,sizeof(dirbuf));
strcpy(dirbuf,argv[1]);
strcat(dirbuf,"/");
strcat(dirbuf,direntp->d_name);
[/PHP]
然后对dirbuf操作就可以了
 楼主| 发表于 2004-9-3 14:36:03 | 显示全部楼层
哇。。。真的可以,太谢谢了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表