一个关于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下的
不能编译后直接运行,要给她参数....................