我有一个指向字符数组foo的指针
char *foo = "abbdefg";
和常规字符数组栏。
char bar[10];
bar包含bar中唯一的字符数组。例如,我希望bar [0]等于“ a”,bar [1] =“ b”,bar [2] =“ d”,依此类推。但是,当我将bar [0]设置为foo [0]时,bar [ 0] =“ abbdefg”和bar [1] =“ bbdefg”,依此类推。
我知道如何用printf打印我想要的东西
printf("%c", foo[0]);
给a和
printf("%c", foo[1]);
给出b,但是我不知道如何将bar [0]设置为“ a”而不是“ abbdefg”。
任何建议都可以帮上忙,谢谢。
答案 0 :(得分:1)
我认为您在混淆字符和字符串。
bar包含bar中唯一的字符数组。例如,我希望bar [0]等于“ a”,bar [1] =“ b”,bar [2] =“ d”,依此类推。但是,当我将bar [0]设置为foo [0]时,bar [ 0] =“ abbdefg”和bar [1] =“ bbdefg”,依此类推。
我知道如何用printf打印我想要的东西
bar [0]不能等于"a"
,因为bar [0]是一个字符,而“ a”是一个字符串(在这种情况下,是两个字符的数组)。 bar [0]可以等于'a'
,即字母a。并且bar [1]可以等于'b',bar [2]可以等于'd',依此类推。
当您将bar [0]设置为foo [0]时,例如使用bar[0] = foo[0];
,bar [0]现在将保持'a'。 bar [1]仍然保留其之前的内容。
bar [0]当然不能容纳“ abbdefg”,因为它只能容纳一个字符。很有可能,您是使用%s而不是%c意外地打印了bar中的所有字符,而不仅仅是bar [0]。