c - 在 C 中使用指针和 Strcpy

标签 c linux

我对 C 中的指针概念还很陌生。假设我有两个变量:

char *arch_file_name;
char *tmp_arch_file_name;

现在,我想将 arch_file_name 的值复制到 tmp_arch_file_name 并在其末尾添加单词“tmp”。我将它们视为字符串,所以我有:

strcpy(&tmp_arch_file_name, &arch_file_name);
strcat(tmp_arch_file_name, "tmp");

但是,当 strcat() 被调用时,两个变量都改变了并且是相同的。我希望其中一个改变,另一个保持完整。我必须使用指针,因为稍后我将名称用于 fopen()、rename() 和 delete() 函数。我怎样才能做到这一点?

最佳答案

你想要的是:

strcpy(tmp_arch_file_name, arch_file_name);
strcat(tmp_arch_file_name, "tmp");

您只是在原始代码中复制指针(和其他随机位,直到您遇到 0 字节),这就是它们最终相同的原因。

正如 shinkou 正确指出的那样,确保 tmp_arch_file_name 指向一个足够大的缓冲区(不清楚您是否在代码中这样做)。最简单的方法是做类似的事情:

char buffer[256];
char* tmp_arch_file_name = buffer;

关于c - 在 C 中使用指针和 Strcpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13023523/

相关文章:

linux - docker容器在启动期间无法在卷挂载中打开符号链接(symbolic link)文件

c - 从 header 中读取 sh_name 每次都会返回一个值

php - 在远程 Linux 服务器上启动和停止服务

c - 关于void指针的问题

c - 数组和指针的类比

python - 如何使用 ctypes 在 python 中使用 'catch' c printf?

Linux NASM 检测 EOF

objective-c - 如何纯粹用 C 编写 iOS 应用程序

Python-C 集成 : Ctypes, CFFI 或创建二进制模块

ruby-on-rails - 哪个 *nix 用户在 Ruby/Rails 中运行由 "system"执行的命令?