一个简单的问题,但不知怎的,我无法找到解决方案,
我想基本上传递,在我的程序中,我的一个参数是发送程序输出所需的文件。
在main()中设置它并不是一个真正的问题但是,我想知道如何在非主要的函数中处理argv []。
我试过这样:
void print_ip(struct arp* arp, char* argv[]){
char *myfile = argv[2];
if ( strlen(argv[2]) <= 0 ){
printf("ERROR: Please specify a proper interface \n");
}
else {
strcpy(myfile, argv[2]);
}
f = fopen(myfile, "w");
if (f != NULL){
printf("Found an IP address \n");
fprintf(f, "\t<ipv4>%s, %s</ipv4>", arp->ipv4_destination, arp->ipv4_source);
}
else {
printf("ERROR: Failed to open file \n");
exit(1);
}
}
此功能有效,唯一的问题是当我尝试从其他地方启动该功能时
例如
void arp_scan(struct arp*, int bsd_socket){
... code ...
print_ip(&arp, argv);
}
我收到以下错误:
scanner.c:在函数'arp_scan'中:scanner.c:187:25:错误:'argv' 未申报(首次使用此功能) print_ip(&amp; arp,argv);
当然,除了在每个函数中声明char * argv []之外,必须有一种方法可以将它从一个函数中移植到另一个函数
答案 0 :(得分:0)
只有main可以接受来自命令行(argv)的参数。如果要将这些命令行参数传递给函数,则需要将它们作为参数传递。
#include <stdio.h>
int passingvars(int argc, char **argv)
{
int i = 0;
while (i < argc)
{
printf(argv[i]);
i++;
}
}
int main(int argc, char *argv[])
{
passingvars(argc, argv);
return 0;
}