C中命令行参数的字符串
我在这里收到一条错误消息-初始化从指针生成整数,而不进行强制转换。file1和file2是文件名。我如何处理这个问题?C中命令行参数的字符串,c,pointers,char,variable-assignment,incompatibletypeerror,C,Pointers,Char,Variable Assignment,Incompatibletypeerror,我在这里收到一条错误消息-初始化从指针生成整数,而不进行强制转换。file1和file2是文件名。我如何处理这个问题?argv[1]和argv[2]具有指向字符串的类型char*,而对象file1和file2具有char类型,不是指针。因此,编译器发出一个错误,即您试图将指针(argv[1]和argv[2])分配给没有意义的字符(file1和file2) int main(int argc, char* argv[]) { char file1 = argv[1]; char f
argv[1]
和argv[2]
具有指向字符串的类型char*
,而对象file1
和file2
具有char类型,不是指针。因此,编译器发出一个错误,即您试图将指针(argv[1]
和argv[2]
)分配给没有意义的字符(file1
和file2
)
int main(int argc, char* argv[]) {
char file1 = argv[1];
char file2 = argv[2];
}
你需要写作
char file1 = argv[1];
char file2 = argv[2];
在这种情况下,指针
file1
和file2
将指向用户提供的表示文件名的字符串。char
->char*
变量argv
是指向char
的指针数组。每个元素的类型都是char*
。哦,除非您先选中argc
,以确保索引有效,否则不要使用argv
数组中的指针。这是否回答了您的问题?@Someprogrammerdude的规则有一个例外:argv
-数组也是以null结尾的(由标准保证),因此您也可以替代检查argc
,比如for(char**p=argv;*p;++p){/*使用*p*/}
。但这很少被使用。
char *file1 = argv[1];
char *file2 = argv[2];