假设我有
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/