C + CentOS 64 Bit+gcc 版本 4.1.2 20080704 (Red Hat 4.1.2-46), dirname

#include <stdio.h> #include <string.h> #include <stdlib.h> main(int argc, char **argv) { char *bufP=malloc(128); strcpy(bufP,(char *)argv[1]); printf("dir=%s/n",bufP); printf("argv[1]=%s/n",(char *)argv[1]); char *ROOT=malloc(256); memset(ROOT,0,256); printf("%s/n",dirname(bufP)); printf("%s/n",bufP); }

gcc -o a a.c

 

执行:

./a /home/www/socketchat/gm11.txt

结果:

dir=/home/www/socketchat/gm11.txt
argv[1]=/home/www/socketchat/gm11.txt
/home/www/socketchat
/home/www/socketchat
总结:dirname应该会将结果存出传入的参数当中,传入的参数必须分配内存,不能是常量

 

再来一个,取得当前运行的程序的位置的代码:

#include <stdio.h> #include <string.h> #include <stdlib.h> main(){ char bufP[256],ROOT[256]; char resolved_path[256]; memset(bufP,0,256);printf("%d/n",__LINE__); sprintf(resolved_path,"/proc/%d/exe",getpid()); readlink(resolved_path,bufP,256);printf("%d/n",__LINE__); //printf("resolved_path=%s/n",resolved_path); //printf("bufP=%s/n",bufP); memset(ROOT,0,256); strcpy(ROOT,bufP); dirname(ROOT); printf("%s/n",ROOT); }

 

转载于:https://www.cnblogs.com/Iamlein/archive/2010/07/04/2375917.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值