Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 警告:赋值从指针生成整数而不使用强制转换ARGV_C_Argv - Fatal编程技术网

C 警告:赋值从指针生成整数而不使用强制转换ARGV

C 警告:赋值从指针生成整数而不使用强制转换ARGV,c,argv,C,Argv,这是我得到的警告 copyit.c: In function ‘main’: copyit.c:15: warning: assignment makes integer from pointer without a cast copyit.c:16: warning: assignment makes integer from pointer without a cast 对应的代码行是以指针(*)开头的代码行 我只想分配这两件事,这样我就可以像那样从命令行传递它们,然后在我的句柄中使用它们

这是我得到的警告

copyit.c: In function ‘main’:
copyit.c:15: warning: assignment makes integer from pointer without a cast
copyit.c:16: warning: assignment makes integer from pointer without a cast
对应的代码行是以指针(*)开头的代码行

我只想分配这两件事,这样我就可以像那样从命令行传递它们,然后在我的句柄中使用它们(例如:inhandle=open(source,ordonly);
谢谢。

argv是一个字符串指针数组。您只需将
目标
更改为
字符*
常量字符*
而不是数组,然后将代码更改为

source = argv[3];
target = argv[4];
这将使它正常工作。如果您将字符串复制到数组中,它还将防止缓冲区溢出。这还意味着您的应用程序将处理长文件路径。

使用string.h中的strcpy():

strcpy(source,argv[1]);
strcpy(target,argv[2]);

谢谢,我这么做了,但奇怪的是,我只得到了第一个警告:警告:内置函数“strcpy”思想的不兼容隐式声明?包括标题
。顶部包括string.h此解决方案的问题是,如果用户传递的命令行参数大于您输入的127个字符,则ust存在缓冲区溢出。您可以使用strncpy来阻止缓冲区溢出,但现在您的左边有一个程序,如果路径传入大于127个字符,该程序将失败。strcpy不会检查任何内容。@haccks:请仔细阅读答案。他建议更改
目标
的声明,使它们成为机器人h
char*
,不是数组。这是个好主意,可能是这里最好的答案;可能没有必要复制数组内容。@KeithThompson;对不起,我错过了。
strcpy(source,argv[1]);
strcpy(target,argv[2]);