如何访问字符数组的第一个字符?

时间:2010-10-02 12:09:28

标签: c arrays indexing printf character

#include <stdio.h>

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

以上代码打印出"hello world."

我如何打印"h"?访问x[0]不应该确保这一点吗?

5 个答案:

答案 0 :(得分:7)

你应该这样做:

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

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

另外,要访问有效索引i的数组元素,您需要说array_name[i]。您不应该使用&。使用&将为您提供元素的地址。

答案 1 :(得分:4)

  

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

不,因为&中的&x[0]获取了字符串第一个元素的地址(因此它等同于仅使用x

%s将输出字符串中的所有字符,并在字符串的末尾看到空字符(这对于文字字符串是隐含的)。

为了打印出一个字符而不是整个字符串,请改用字符格式说明符%c

请注意,printf("%s \n", x[0]);无效,因为x[0]的类型为char%s的格式为char *

答案 2 :(得分:3)

#include <stdio.h>

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

答案 3 :(得分:2)

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

答案 4 :(得分:0)

因为C中的字符串是一个字符数组。 该语句将打印第一个字符。

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