argv的输出问题

lyao801013 2009-06-14 12:37:07
int main(int argc,char * argv[])
{
int icount = 0;
char * str_before;
char * str_after;
while(icount < argc)
{
if(icount == 2)
str_before = argv[icount];
cout<<"str_before "<<str_before<<endl;
icount++;
}

return 1;
}
...全文
54 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyao801013 2009-06-15
  • 打赏
  • 举报
回复
谢谢楼上各位,以后要多向各位请教,
cyberwjf 2009-06-14
  • 打赏
  • 举报
回复
int main(int argc,char * argv[])
{
int icount = 0;
char * str_before;
char * str_after;
while(icount < argc)
{
if(icount == 2)
{ 我想你是刚学编程吧,if判断后面的两句是想要这样写的吧。
str_before = argv[icount];
cout < <"str_before " < <str_before < <endl;
}
icount++;
}

return 1;
}

内存错是因为只有当icount == 2的时候才会给str_before设值,没有被初始化的指针使用的时候就会内存错。

以后写程序的时候小心点儿就行了。
飞天御剑流 2009-06-14
  • 打赏
  • 举报
回复
icount不为2的时候,str_before没有被初始化,所指向的地方是不可知的,所以运行时出错。

if(icount == 2)是多余的,去掉就可以了。
superbtl 2009-06-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lyao801013 的回复:]
请问,这个str_before怎么输出不出来,
而且报错,不能read内存,
[/Quote] char * str_before;
char * str_after;
都没分配内存呢?
argc>=1的 你加这个条件。。。。argv[0] 是程序的执行文件名称
lyao801013 2009-06-14
  • 打赏
  • 举报
回复
请问,这个str_before怎么输出不出来,
而且报错,不能read内存,
wlwshang 2009-06-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 lyao801013 的帖子:]
int main(int argc,char * argv[])
{
int icount = 0;
char * str_before;//指向具体的地
char * str_after; //指向具体的地址
while(icount < argc)
{
if(icount == 2) //看不出是什么意思。
{
str_before = argv[icount];
cout < <"str_before " < <str_before < <endl;
}//加大括号是正解
icount++;
}

return 1;//为什么要返回1,应该是0吧。
}
[/Quote]

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧