无法从C中的argv [1]获取文件名

时间:2016-09-27 15:07:43

标签: c string input

我正在尝试制作一个程序来制作您放入的文件的副本,然后使用反向文件名(例如input.txt = txt.tupni)。 我用

开始我的程序
int main(int argc, char **argv) {

当我使用printf("%s",argv[1])时,我可以看到已经放入的文件名。但是,当我尝试操作它时,我无法让它工作。 char name = argv[1]不起作用, char name[] = argv[1]也没有工作

我想要的只是一个char数组或一个包含所有字符的malloc内存。

2 个答案:

答案 0 :(得分:4)

argv的类型为char **,因此argv[1]的类型为char *。这就是你想要赋予它的变量的类型。

char *name = argv[1];

您无法将name声明为char []并使用char *对其进行初始化。只有字符串文字可用于初始化。

如果你想制作一个字符串的副本而不是另一个指向它的指针,你可以使用strdup为复制的字符串分配内存并复制它。

char *name = strdup(argv[1]);

当你完成它时,别忘了free

答案 1 :(得分:0)

您需要使用strcpy之类的函数来完成此任务,并知道字符串长度。

这是你做的事情:

int len = strlen(argv[1])
char *buffer = (char*)malloc(len + 1);
if(buffer != NULL)
{
    strcpy(buffer, argv[1]);
    // copy the file etc.
}