C:换成argc和argv

时间:2014-02-03 21:43:17

标签: 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” 又称,将它们存储为argv [1]和argv [2]

我也使用输入(目标和来源) 句柄如:

inhandle=open(source,O_RDONLY);

我的主要问题是转换,因为我将目标和源存储为char。我可以使用类似strcpy的东西。 如果有人可以帮助我,我将非常感激。希望这很清楚。谢谢。

** * ** * ** *编辑:我道歉,我可能还不够清楚......

我尝试做int main(int argc,char * argv [])然后包括:

if(argc==3) 
{ source = argv[1]; target = argv[2]; } 
else{ printf("Syntax error.\n"); 
return -1; 

但我得到转换错误,因为我无法以这种方式存储它们。如果我将它们存储为指针(如* target = argv [2]),我担心当我调用句柄时它们将无法工作..(例如:outhandle = open(target ...)有效,但我可以打开(*目标..)

2 个答案:

答案 0 :(得分:2)

使用int main(int argc,char ** argv); 然后将源分配给argv [1]并将目标分配给argv [2]

答案 1 :(得分:0)

更改为:

if(argc==3) 
{
    strcpy(source, argv[1]);
    strcpy(target, argv[2]);
}

另外,请阅读strcpy的危险,并考虑strncpy 但是使用strcpy将至少让你开始......