【发布时间】:2015-03-22 17:47:34
【问题描述】:
我想读取三个文件的路径(例如,“../c/..file”)和一个来自 argv[] 的 long 并将它们绑定到三个已经创建的 char* ,还有一个long 值称为 num。
这是我的主要功能:
int main(int argc, char* argv[]){
char* file1 = NULL;
char* file2 = NULL;
char* file3 = NULL;
long num = 0;
//copy the file paths to the char*'s
strcpy(file1, argv[1]);
strcpy(file2, argv[2]);
strcpy(file3, argv[3]);
// convert from string to long int
num = strtol(argv[4],NULL,0);
}
但是这不起作用,并且文件的文件名和 long 的值不会像他们应该的那样最终出现在变量上。
我该如何解决这个问题?
在我的程序中,我检查了 argc 值以确保我没有传递错误的东西,但在这里我以这种方式编写函数只是为了说明我的问题。
【问题讨论】:
-
您正在尝试将
strcpy您的argv字符串转至NULL地址。要么按照@jschultz410 在他的回答中所说的去做,要么使用strdup而不是strcpy。 -
@lurker:请注意
strdup不是标准C。 -
strdup 是 posix 标准
标签: c