读书人

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

发布时间: 2012-02-25 10:01:49 作者: rapoo

一个关于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下的

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

读书人网 >C++

热点推荐