我正在开发一个带有一些系统调用的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 ...)有效,但我可以打开(*目标..)
答案 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
将至少让你开始......