C:转换为argc和argv

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

我正在处理一个带有一些系统调用的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]和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…工作正常,但我不能打开*目标..}