【问题标题】:Trouble with char pointers in CC中的字符指针问题
【发布时间】:2018-12-04 21:24:03
【问题描述】:

我有一个指向字符数组 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]);

给一个和

printf("%c", foo[1]);

给出 b,但我不知道如何将 bar[0] 设置为“a”而不是“abbdefg”。

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

【问题讨论】:

  • 我很抱歉我的意思是让 foo 成为一个指针但做了一个类型,我已经编辑了它,现在它是正确的。我查看了另一个线程,但它对我的问题没有帮助。
  • 张贴minimal reproducible example 说明问题。
  • 您是否在复制的字符后面的bar 中写了一个字符串终止符'\0'
  • 你知道“a”和“a”的区别吗?

标签: c arrays pointers char


【解决方案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]。

【讨论】:

  • 感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
相关资源
最近更新 更多