C语言中字符指针的问题

C语言中字符指针的问题,c,arrays,pointers,char,C,Arrays,Pointers,Char,我有一个指向字符数组foo的指针 char *foo = "abbdefg"; 和一个常规字符数组条 char bar[10]; bar包含在bar中唯一的字符数组。例如,我希望条[0]等于“a”,条[1]=“b”,条[2]=“d”,等等。但是,当我将条[0]设置为foo[0],条[0]=“abbdefg”和条[1]=“bbdefg”等等 我知道如何用printf打印我想要的东西 printf("%c", foo[0]); 打招呼 printf("%c", foo[1]); 给出b,但我

我有一个指向字符数组foo的指针

char *foo = "abbdefg";
和一个常规字符数组条

char bar[10];
bar包含在bar中唯一的字符数组。例如,我希望条[0]等于“a”,条[1]=“b”,条[2]=“d”,等等。但是,当我将条[0]设置为foo[0],条[0]=“abbdefg”和条[1]=“bbdefg”等等

我知道如何用printf打印我想要的东西

printf("%c", foo[0]);
打招呼

printf("%c", foo[1]);
给出b,但我不知道如何将bar[0]设置为“a”而不是“abbdefg”


任何建议都会很有帮助,谢谢。

我想你把字符和字符串搞混了

bar包含在bar中唯一的字符数组。例如,我希望条[0]等于“a”,条[1]=“b”,条[2]=“d”,等等。但是,当我将条[0]设置为foo[0],条[0]=“abbdefg”和条[1]=“bbdefg”等等

我知道如何用printf打印我想要的东西

printf("%c", foo[0]);
bar[0]不能等于
“a”
,因为bar[0]是一个字符,“a”是一个字符串(在本例中是两个字符的数组)。条形图[0]可以等于字母a的“a”。条[1]可以等于“b”,条[2]可以等于“d”,以此类推

当您使用
bar[0]=foo[0]将bar[0]设置为foo[0]时例如,条[0]现在包含“a”。bar[1]仍然持有它以前持有的任何东西


条[0]当然不能容纳“abbdefg”,因为它只适合一个字符。最有可能的情况是,您使用%s而不是%c无意中打印出了条中的所有字符,而不仅仅是条[0]。

很抱歉,我本想将foo作为指针,但创建了一个类型,我已对其进行了编辑,现在它是正确的。我查看了另一个线程,但它对我的问题没有帮助。发布了一篇演示问题的文章。您是否在复制的字符后在
中编写了字符串终止符
'\0'
?您知道“a”和“a”之间的区别吗?谢谢您的帮助。