int main()
需要 1 个命令行参数:in_filename = argv[1]
(命令行参数示例: inputfile.txt
)。 *in_filename
和*out_filename
都是 const char *。我想在out_filename地址写入*in_filename指向的地址中存储的值。例如,如果 *in_filname 是 0x7fffffffe930
*out_filename 指向的地址(与 0x7fffffffe930
不同)的“inputfile.txt”将存储为“inputfile.txt”。
int main(int argc, char **argv){
const char *in_filename, *out_filename;
in_filename = argv[1];
out_filename = argv[1];
return 0
}
如果我使用上面的代码,out_filename 将具有与 in_filename 相同的地址,但我希望他具有与存储在 in_filename 指向的地址中的值不同的地址和相同的值 (inputfile.txt)。
如果我使用
int main(int argc, char **argv){
const char *in_filename, *out_filename;
in_filename = argv[1];
strcpy(out_filename, in_filename);
return 0
}
我在调试器中收到错误:out_filename 的地址为 0x40000,但访问它时出错,程序停止。 in_filename 有一个地址和存储在其中的正确值。此任务的正确代码是什么?
最佳答案
您所要求的代码是:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
const char *in_filename;
char *out_filename;
in_filename = argv[1];
out_filename = malloc(strlen(in_filename)+1);
strcpy(out_filename, in_filename);
printf("%s\n", in_filename);
printf("%s\n", out_filename);
return 0;
}
函数strcpy
采用char *
作为目标,而不是const char *
(参见strcpy) .
关于c - 如何将另一个指针所指向的地址中存储的值赋给一个指向的指针的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57407883/