警告:赋值在没有强制转换ARGV的情况下从指针生成整数

时间:2014-02-04 01:01:23

标签: 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

这对应的代码行是以指针(*)开头的代码行。

char source[128],target[128],buffer[512];

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

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

2 个答案:

答案 0 :(得分:4)

argv是一个字符串指针数组。您应该将sourcetarget更改为char *const char *而不是数组,并将代码更改为

source = argv[3];
target = argv[4];

这将使它成功。如果将字符串复制到数组中,它还可以防止缓冲区溢出。这也意味着您的应用将处理长文件路径。

答案 1 :(得分:-1)

使用string.h中的strcpy():

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