You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言技术问询:如何将char*内容存储到char数组中?

解决指针内容存到char数组的问题

嘿,咱们先拆解下你这段代码的逻辑:

char *output; 
char store[100]; 
output = store;

这里output已经直接指向了store数组的起始地址,也就是说**output和store共享同一块内存空间**——修改output指向的内容,本质就是修改store数组里的内容,反过来也成立。

我猜你大概率是想把output后续指向的其他内容(比如另一个字符串)复制到char数组里?下面分场景给你具体方案:

场景1:output指向了一个以\0结尾的字符串,要复制到store数组

这是最常见的情况,直接用标准库的字符串复制函数就行,记得先包含头文件<string.h>:

方法1:用strcpy(简单但要注意数组容量)

#include <string.h>

// 假设output后来指向了某个字符串
output = "Hello Stack Overflow";
// 把output指向的字符串完整复制到store
strcpy(store, output);

⚠️ 注意:必须保证store数组的大小足够容纳要复制的字符串(包括末尾的\0终止符),否则会触发缓冲区溢出,导致程序崩溃或异常。

方法2:用strncpy(更安全,限制复制长度)

如果不确定目标字符串的长度,优先用这个,能避免溢出:

#include <string.h>

output = "Hello Stack Overflow";
// 最多复制sizeof(store)-1个字符,留一个位置存'\0'
strncpy(store, output, sizeof(store) - 1);
// 手动添加字符串终止符,因为strncpy如果没复制完整个字符串,不会自动加'\0'
store[sizeof(store) - 1] = '\0';

场景2:要把output指向的内容复制到另一个char数组

比如你还有一个数组char backup[100];,想把output(也就是store)里的内容存进去,用法和上面一样:

strcpy(backup, output); 
// 等价于strcpy(backup, store); 因为output指向store

场景3:output指向的是二进制数据(非\0结尾)

如果不是字符串,而是没有终止符的二进制数据,要用memcpy来复制指定长度的内容:

#include <string.h>

// 假设要复制50个字节的内容
size_t data_len = 50;
memcpy(store, output, data_len);

这个函数会严格复制你指定的字节数,不需要依赖\0终止符。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:32:03