我有一个*char指针和一个char数组。如何将指针的值放入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++)
to
for(i = 0; i < 10; i++)
'0'
,而是 '\0'
或 0
。 - Jitei < 10
比i <= 9
更清晰明了,因此更受欢迎。 - Yu Hao0-9
。strlen()
是一个不好的主意。 - Ivan Ivanovich另一种变体:
#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()
在任何情况下都会更快,因为它通常是针对特定架构编写的汇编语言。
sprintf(a, "%p", b);
将指针存入缓冲区a
中。但是,根据指针的大小,缓冲区可能不够宽。实际上,可以尝试使用snprintf()
,这样会更安全。 - Ulrich Eckhardtfor(i = 0; a[i] = b[i]; i++);
- Ivan Ivanovich