c++获取当前路径 向黑客迈进!!!

有很久没有到这里写技术文章了。对不住大家了。不过今天中午想起了一个好消息。今天我发现一个好东西,现在到了极为高兴的地步,呵呵,原来我也可以当黑客!哈哈。

/--------------------------------------------------------------------------
首先向大家介绍的是如何用c++获取当前的路径。其实用c语言也可以做到的,只是将输出语句稍作变换即可。
关键词:main()函数。
main()函数大家不会不熟悉吧,也有相当的人知道main()函数可以带参数的。但是你们是否用到了它的参数获取当前的路径呢?我在网络上查的结果都是使用win32的API函数,这种方法实在是麻烦。我这里就是很简单,而且很容易理解。下面我就把我的想法说一下:
main()函数的原型是“main(int argc, char** argv)”,其中第一个参数是命令行参数的个数。如果是这样的代码:

Code:
  1. #include<iostream>
  2. usingnamespacestd;
  3. intmain(intargc,char**argv)
  4. {
  5. cout<<argc<<'/n';
  6. return0;
  7. }
  8. 代码1

直接运行时会得到这样的结果:


而使用命令行并加上参数“你好 你好吗”则会得到这样的结果:

main()函数的第二个参数表示的是命令行的指针。这样声明也可以:char* argv[]。再看这样的代码:

Code:
  1. #include<iostream>
  2. usingnamespacestd;
  3. intmain(intargc,char*argv[])
  4. {
  5. cout<<argv[0]<<'/n';
  6. return0;
  7. }
  8. 代码2

直接运行时会得到这样的结果:

用命令行时再带上参数的时候,如果希望对参数进行操作则可以这样编写代码:

Code:
  1. #include<iostream>
  2. usingnamespacestd;
  3. intmain(intargc,char*argv[])
  4. {
  5. cout<<argv[0]<<'/n';
  6. cout<<argv[1]<<'/n';
  7. cout<<argv[2]<<'/n';
  8. return0;
  9. }
  10. 代码3

使用命令行并加上参数“你好 你好吗”则会得到这样的结果:

注意:
1若直接运行example3,则会出现错误,因为argv[1],argv[2]并不存在。
2用命令行的时候必须将程序复制到相应的目录下。

至此大家有什么想法没有?没错!只需要将字符串argv[0]所表示的路径中去掉应用程序名就好了。难吗?很简单!

大家对指针的掌握怎么样?知道两个指针相减所表示的意思吗?其实我们可以这样想,将字符串argv[0]遍历一遍,查找出最后一个“/”字符,并且置0,这样就相当于将字符串截断,这样只显示出当前路径了!

Code:
  1. #include<iostream>
  2. usingnamespacestd;
  3. intmain(intargc,char**argv)
  4. {
  5. char*p=&argv[0][0];
  6. inti;
  7. for(;*p!=0;p++)
  8. if(*p=='//')
  9. i=p-argv[0];
  10. argv[0][i]=0;
  11. cout<<argv[0]<<'/n';
  12. return0;
  13. }
  14. 代码4

当然,想保留字符“/”也行,就是将上述代码第十行的“argv[0][i] = 0;”改为“argv[0][i+1] = 0;”即可。
现在请大家看看应用程序的截图吧。

怎么样,很简单吧,其实这仅仅是第一步,好戏在后头呢。(第一讲完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值