C语言中的char指针出现问题

时间:2018-12-04 21:24:03

标签: c arrays pointers char

我有一个指向字符数组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”。

任何建议都可以帮上忙,谢谢。

1 个答案:

答案 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]。