[英]Trouble with char pointers in C
我有一个指向字符数组 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”。
任何建议都会有所帮助,谢谢。
我认为你混淆了字符和字符串。
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”,因为它只适合一个字符。 最有可能的是,您不小心打印了 bar 中的所有字符,而不仅仅是 bar[0],使用 %s 而不是 %c。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.