指向字符数组的C*字符指针
我有一个*字符指针和一个字符数组。 如何将指针的值放入char数组中?我试过了指向字符数组的C*字符指针,c,arrays,string,pointers,C,Arrays,String,Pointers,我有一个*字符指针和一个字符数组。 如何将指针的值放入char数组中?我试过了 uint8_t i; char a[10]; char *b = "abcdefghi"; for(i = 0; i < 9; i++) { a[i] = b[i]; } printf("%s", a); 但这不起作用。a的大小是10,包含空终止符的B的长度也是10。改变 for(i = 0; i < 9; i++) 到 你所做的是对的 突出物变化i还有另一个变体: #include <
uint8_t i;
char a[10];
char *b = "abcdefghi";
for(i = 0; i < 9; i++)
{
a[i] = b[i];
}
printf("%s", a);
但这不起作用。a的大小是10,包含空终止符的B的长度也是10。改变
for(i = 0; i < 9; i++)
到
你所做的是对的 突出物变化i还有另一个变体:
#include <stdio.h>
int main(void)
{
char a[10];
char *c = a;
char *b = "abcdefghi";
for(; *c = *b; ++c, ++b);
printf("%s", a);
return 0;
}
但是strcpy在任何情况下都会工作得更快,因为它通常是用汇编语言为特定的体系结构编写的您可以使用sprintfa,%p,b;将指针放入缓冲区a。但是,缓冲区可能不够宽,这取决于指针的大小。实际上,请查看snprintf,它应该更安全。您错过的是C字符串以NULL结尾的事实,事实上b包含abcdefghi\0。您可以:fori=0;a[i]=b[i];i++;yes字符串在C中以NULL结尾,最后一个字符为“0”。@philippelhardy不是“0”,而是“\0”或“0yes我不应该使用封闭”。0x0字节0。谢谢这个答案真的很有帮助,但是这里有一个小错误,就像i=0;在每次迭代中,i@Rio i<10比i strlen更清楚是个坏主意
#include <stdio.h>
int main(void)
{
char a[10];
char *c = a;
char *b = "abcdefghi";
for(; *c = *b; ++c, ++b);
printf("%s", a);
return 0;
}