将字符串的尾部复制到C中的另一个数组中,没有引用,也没有指针
假设我有将字符串的尾部复制到C中的另一个数组中,没有引用,也没有指针,c,arrays,string,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将获取最后两个字符,但仍充当指针,因此如果 char help[1] = 'z'; 原始字符串变为
char *one = "1234567890ab"
我想将第10个字符之后的所有内容复制到C中的另一个数组中。但我想复制它,我不希望有指针指向它,因此如果我修改包含ab的数组,原始数组将不会发生任何变化
如果我这样做:
char help[10];
for(i=0; ((char help[i] = *(one + n + i)) != '\0'; ++i);
char help将获取最后两个字符,但仍充当指针,因此如果
char help[1] = 'z';
原始字符串变为
"1234567890az"
我怎样才能防止这种情况发生谢谢
编辑:我尝试了strcpy,但它不起作用,仍然产生了一个指针。strcpy确实是一种方法。此代码:
#include <stdio.h>
#include <string.h>
int main(void) {
char *one = "1234567890ab";
char two[10];
strcpy(two, one + 10);
two[1] = 'z';
printf("one: %s\n", one);
printf("two: %s\n", two);
return 0;
}
请参阅此图。当帮助被定义为字符数组时,strcpy无法在帮助之外“生成指向一个的指针”。它独立于原始字符串。代码中的其他地方有一个错误,但目前您没有显示足够的代码来说明它是什么。但是,以下代码:
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
不,这不起作用同时复制\0字符strcpy工作正常。只要strcpyhelp,1+10;。char-help将获取最后两个字符,但仍然充当指针,因此如果go-char-help[1]=z;原始字符串变为“1234567890az”。抱歉,我不相信你。问题中循环的一个固定的、可编译的版本,也如预期的那样工作:是的,还有其他问题,仍然找不到它是什么,但是谢谢
one = 1234567890ab
help = ab
one = 1234567890ab
help = az