在C中将字符串的尾部复制到另一个数组中,无引用无指针

标签 c arrays string

假设我有

char *one = "1234567890ab"

我想将第10个字符之后的所有内容复制到C中的另一个数组中。但是我想复制它,我不想要指向它的指针,所以如果我修改保存“ab”的数组,原来的没有任何变化。

如果我做类似的事情:

char help[10];
for(i=0; ((char help[i] = *(one + n + i)) != '\0'; ++i);

char help 将获取最后两个字符,但仍充当指针,因此 if go

char help[1] = 'z';

原来的字符串变成

"1234567890az"

如何防止这种情况发生,谢谢

编辑:我尝试了 strcpy 但它不起作用,仍然产生了一个指针。

最佳答案

help 定义为时,

strcpy 无法从 help 中“生成 [指向 one] 的指针” char 数组。它独立于原始字符串。您的代码中其他地方有错误,但目前您没有显示足够的代码来判断它是什么。但是,以下代码:

char *one = "1234567890ab";
char help[10];
(void) strcpy(help, one + 10);
(void) printf("one = %s\nhelp = %s\n", one, help);
help[1] = 'z';
(void) printf("one = %s\nhelp = %s\n", one, help);

产生输出:

one = 1234567890ab
help = ab
one = 1234567890ab
help = az

关于在C中将字符串的尾部复制到另一个数组中,无引用无指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28464164/

相关文章:

c - 微 Controller 编程

c - 根据另一个数组的内容对 C 数组进行排序

python - 如何使用numpy连接?

C++ 将二维数组传递给构造函数(没有已知的转换错误)

javascript - 在 JavaScript 中旋转数组中的元素

java - 第 N 次出现的字符和 if 条件

c - 奇怪的重定向行为允许输出截断

c - 将单词分配给长度时遇到问题

当一天有 "0"时,MySQL STR_TO_DATE 似乎失败

c - 强制刷新或读取未刷新的输出