我正在尝试制作一个程序来制作您放入的文件的副本,然后使用反向文件名(例如input.txt = txt.tupni)。 我用
开始我的程序int main(int argc, char **argv) {
当我使用printf("%s",argv[1])
时,我可以看到已经放入的文件名。但是,当我尝试操作它时,我无法让它工作。
char name = argv[1]
不起作用,
char name[] = argv[1]
也没有工作
我想要的只是一个char数组或一个包含所有字符的malloc内存。
答案 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.
}