2010-10-02 68 views
2
#include <stdio.h> 

int main(void){ 
    char x [] = "hello world."; 
    printf("%s \n", &x[0]); 
    return 0; 
} 

上面的代码打印出"hello world."如何访问字符数组的第一个字符?

我怎么会打印出刚刚"h"?访问x[0]不应该保证这一点?

回答

7

你应该这样做:

printf("%c \n", x[0]); 

format specifier打印字符是c。所以要使用的格式字符串是%c

还要访问有效索引i处的数组元素,您需要说array_name[i]。你不应该使用&。使用&会给你元素的地址。

+0

这个伎俩! – Kay 2010-10-02 12:19:24

4

不应该访问x[0]确保这?

没有,因为在&x[0]&获取字符串的第一个元素的地址(所以它相当于只用x

%s将输出所有字符串中的字符看空字符在所述字符串的末尾(这是隐式为文字串)。

为了打印出一个字符,而不是整个字符串,使用字符格式说明,%c代替。

请注意,printf("%s \n", x[0]);将无效,因为x[0]类型为char,而%s预计为char *

+0

非常感谢,我很欣赏的,而不是发布评论说:“非常感谢”,请尝试单击后旁边的向上箭头您的帮助:) – Kay 2010-10-02 12:17:06

+3

@Kay。此外,请单击旁边的复选标记,并以最佳答案为准。 – 2010-10-02 12:22:02

3
#include <stdio.h> 

int main(void){ 
    char x [] = "hello world."; 
    printf("%c \n", x[0]); 
    return 0; 
} 
+0

非常感谢保罗:) – Kay 2010-10-02 12:18:49

2

C中的字符串是一个字符数组,其最后一个字符为NULL字符'\ 0'。当您在printf中使用“%s”字符串说明符时,它将在给定地址处开始打印字符,并继续执行,直至遇到空字符。要打印单个字符,请改用“%c”格式字符串。

0

由于C中的字符串是一个字符数组。 该声明将打印第一个字符。

printf("%c \n", "hello world."[0]);