首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个关于main()参数的有关问题,

2012-03-28 
一个关于main()参数的问题,急~#includeiostream#includestringusingnamespacestdintmain(intargc,cha

一个关于main()参数的问题,急~
#include   <iostream>
#include   <string>
using   namespace   std;

int   main(int   argc,char   **argv)
{
        char   ch[100];
        strcpy(ch,argv[1]);     //断点调试了一下,问题应该在这边
        cout < <ch < <endl;
        system( "pause ");
        return   0;  
}  
调试通过,但是运行时出错,说:
"0x77c160 "指令应用的 "0x00000000 "内存,该内存不能为读。
昨天晨星等几位大哥都回了,说了几种解决方法,这边先谢谢了,但是还是出错。
哪位兄台帮我解决一下,最好测试一下,立马给分,谢谢。

[解决办法]
你是否在运行时给了它第二个参数.默认只有一个参数.
[解决办法]
int main(int argc,char **argv)
{
argv[1] = "abcde ";//或者编译选项中加命令行参数,或者这里显式的赋值改变参数
char ch[100];
memset(ch, 0, 100);
strcpy(ch,argv[1]); //断点调试了一下,问题应该在这边
cout < <ch < <endl;
system( "pause ");
return 0;
}
[解决办法]
strcpy(ch,argv[1]);
改为
strcpy(ch,argv[0]);
[解决办法]
我运行时就出错,连给参数的机会都没有,呵呵
-------------------------------------
todototry()

编译选项中
alt+f7
加入命令行参数

顶一下

[解决办法]
int main(int argc,char **argv)
{
char ch[100];
if(argc <2){
cout < < "era " < <endl;
return 0;
}
strcpy(ch,argv[1]); //断点调试了一下,问题应该在这边
cout < <ch < <endl;
system( "pause ");
return 0;
}
编译选项中
alt+f7
加入命令行参数

[解决办法]
DEV_CPP 在这里设置参数:
Debug => Parameters => Parameters to pass to your program

参数之间用空格分开.
[解决办法]
strcpy( ch, argv[1]) );
argv[1] 指向内存越界了 因此系统报错
argv[0] 和 argv[1] = ".... ";都可以
[解决办法]
昨天晨星等几位大哥都回了,说了几种解决方法,这边先谢谢了,但是还是出错。
哪位兄台帮我解决一下,最好测试一下,立马给分,谢谢。
-------------------------------------------------
楼主,你的程序没有任何问题,而是你运行它的方式有问题,你肯定是“ctrl+f5”之类的方法直接在IDE(比如vs)环境下运行的,这样根本没有为应用程序指定“额外参数”,所以会出现运行时错误。

你需要找到构建的应用程序(exe文件),然后在控制台中运行它(假设文件名为A.exe):
A.exe ddddd
然后屏幕自然会显示“ddddd”的。

[解决办法]
直接在命令行的方式下运行
比如
a hello
[解决办法]

都被回答了,补充一下

先判断是否有那么多参数,然后在使用啊

int main(int argc,char **argv)
{
if ( argc > 1 ) //这里要判断一下
{
char ch[100];
strcpy(ch,argv[1]); //断点调试了一下,问题应该在这边
cout < <ch < <endl;
}
system( "pause ");
return 0;
}

热点排行