Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指向字符数组的C*字符指针_C_Arrays_String_Pointers - Fatal编程技术网

指向字符数组的C*字符指针

指向字符数组的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 <

我有一个*字符指针和一个字符数组。 如何将指针的值放入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 <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;
}