C:转换为argc和argv
我正在处理一个带有一些系统调用的C程序,并将变量保存如下:C:转换为argc和argv,c,argv,C,Argv,我正在处理一个带有一些系统调用的C程序,并将变量保存如下: int inhandle,outhandle,bytes,read_while_writing_nhandle; char source[128],target[128]; 现在,我的程序向用户提示 printf("enter source file name\n"); scanf("%s",source); 如何更改它,以便用户只需键入run sourceName targetName aka,将它们存储为argv[1]和arg
int inhandle,outhandle,bytes,read_while_writing_nhandle;
char source[128],target[128];
现在,我的程序向用户提示
printf("enter source file name\n");
scanf("%s",source);
如何更改它,以便用户只需键入run sourceName targetName
aka,将它们存储为argv[1]和argv[2]
我还使用目标和源的输入
在句柄中,例如:
inhandle=open(source,O_RDONLY);
我的主要问题是转换,因为我将目标和源存储为char。我可以用strcpy之类的东西。
如果有人能帮我,我将不胜感激。希望这是清楚的。多谢各位
*********编辑:对不起,我可能不够清楚
我尝试过使用int main argc,char*argv[],然后包括:
if(argc==3)
{ source = argv[1]; target = argv[2]; }
else{ printf("Syntax error.\n");
return -1;
但我会得到转换错误,因为我不能以这种方式存储它们。如果我将它们存储为*target=argv[2]这样的指针,我担心当我调用句柄时,它们将无法工作。。ex:outhandle=opentarget。。。工作正常,但我不能做open*target 使用int main argc,char**argv; 然后将源分配给argv[1],将目标分配给argv[2]更改为:
if(argc==3)
{
strcpy(source, argv[1]);
strcpy(target, argv[2]);
}
也要阅读STRCPY的危险,并考虑STRNCPY。
但是使用strcpy至少可以让你开始…?如果在命令行上传入参数,它们将自动在argv.char*source=argv[1]中设置;char*target=argv[2];检查argc==3或argc>=3后。要打开的第一个参数的类型为const char*。所以,若您将source声明为char*或const char*,则可以直接将其传递给open。正如许多人指出的,source=argv[1];是保存指向第一个参数的指针的合理方法,因为兼容程序不会修改argv数组或它指向的字符串。我尝试了这样做,然后包括:ifargc==3{source=argv[1];target=argv[2];}else{printfSyntax error.Correct是'copyit sourceFileName targetFileName'\n;返回-1;但是我会得到转换错误,因为我无法以这种方式存储它们。如果我将它们存储为*target之类的指针,我担心调用句柄时它们不会工作..ex:outhandle=opentarget…工作正常,但我不能打开*目标..}