c - 如何将另一个指针所指向的地址中存储的值赋给一个指向的指针的地址?

标签 c pointers memory dereference

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/

相关文章:

c - Linux 获取上下文切换时序

c - 交换两个变量内容的另一种方式?

c++ - C函数指针

c - 在 main() 中将指针分配给 NULL 后,for 循环不执行

Haskell HDBC-ODBC 内存泄漏?

c - K&R 练习 1-9 C 编程解决方案

c - 如何在 Windows 中使用 vt100 代码

c - 如何处理 "warning: ignoring return value of ‘system’ , "

JavaScript - 使用 new 关键字的标准

c - 如何获取指针指向的内存大小?