功能putc的用法

时间:2011-05-13 17:57:14

标签: c

我正在研究一个我没有写过的C程序,并将它与我的C ++代码集成在一起。这个C程序有一个字符数组和用法putc函数来打印它的内容。像这样:

printf("%c\n","01"[b[i]]);

这是一个位数组,可以有ASCII 0或ASCII 1(非ASCII 48和49请注意)。该命令完美地打印“0”和“1”。但是,我不明白在putc命令中使用“01”。我也可以打印这样的内容:

    printf("%d\n",b[i]);

因此我只是好奇。谢谢。

新手

5 个答案:

答案 0 :(得分:4)

"01"是一个字符串文字,所有意图和目的都是一个数组。这有点奇怪......你可以写:

char *characters = "01";
printf("%c\n", characters[b[i]]);

或者甚至更好:

char *characters = "01";
int bit = b[i];
printf("%c\n", characters[bit]);

初看起来会更容易理解。

答案 1 :(得分:1)

令人讨厌的工作方式,但无论是谁写的都是使用b的内容作为字符串的引用,“01”:

"foo"[0] <= 'f'
"bar"[2] <= 'r'
"01"[0] <= '0'
"01"[1] <= '1'

你的数组b包含0和1,而作者想要一种快速将它们转换为'0'和'1'的方法。他可以轻松地做到:

'0' + b[i]

但这是另一种犯罪行为。 =]

答案 2 :(得分:1)

字符串“01”被转换为字符数组(字符串在C中),而b [i]指定0或1,因此它的“分解”视图将是。

"01"[0]

"01"[1]

哪个会从char数组“string”中选择“right”字符。请注意,这只是可能的C,因为字符串是指向字符的指针。因此,[...]操作变为一个内存偏移操作,等于指针类型的一个项目的大小(在这种情况下,一个字符)。

是的,你的printf会好得多,因为它需要较少的晦涩“c”技巧。

答案 3 :(得分:0)

这一行说的是采用字符数组"01"并引用数组元素。从b [i]位置获取该索引。

因此"01"[0]会返回字符0"01"[1]会返回字符1

答案 4 :(得分:0)

做你理解的陈述。

通过将b[i]替换为索引来简化另一个,我们得到

"01"[index]

字符串文字("01")的类型为char[3]。获取其索引01(或2)即可,并返回字符'0''1'(或'\0')。