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

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

2012-02-25 
一个关于main()参数的问题,急~~#includeiostream#includestringusingnamespacestdintmain(intargc,ch

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

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

调试可以通过,但是运行时出错,说内存不能为“read”。strcpy那句错了吗?
急,在线等。谢谢~

[解决办法]
assert( argc > 1 );
assert( strlen(argv[1]) < sizeof(ch) );
[解决办法]
没有错误啊,我是用VS2005编译的
[解决办法]

> > char *infilename;
> > char *outfilename;

> > strcpy(infilename,argv[1]);
> > strcpy(outfilename,argv[2]);

infilename和outfilename没分配空间吧?
[解决办法]
你的问题出在 cout < <argv[1] < <endl;

当然, strcpy(ch,argv[0]);也是错误的, argv[1]本身并不存在.

会有unhandled exception错误, 用argv[0]代替argv[1]看看.
[解决办法]
解决了吗?
[解决办法]
char *infilename;
char *outfilename;

strcpy(infilename,argv[1]);
strcpy(outfilename,argv[2]);
——空间没分配。

解决的办法可以有两种,第一种把那两个指针变量改成数组:
char infilename[100];
char outfilename[100];

第二种在拷贝之间调用new为他们动态分配空间,但别忘记删除。


[解决办法]
int main(int argc,char **argv)
{
//clrscr();
system( "cls ");
if(argc <3)
{
printf( "command number error! ");
return -1; //add one more line
//...

[解决办法]
strcpy(ch,argv[1]);
改成
strcpy(ch,&argv[1]);
[解决办法]
main的参数是DOS下的

不能编译后直接运行,要给她参数....................

热点排行