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

4
#include <stdio.h>

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

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

如果我想只打印出"h",应该怎么做?x[0]不应该保证这一点吗?

5个回答

10

你应该做:

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

打印字符的格式说明符c。因此要使用的格式字符串是%c

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


6

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

不是的,因为 &x[0] 中的 & 获取字符串第一个元素的地址(所以等同于只使用 x)。

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

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

请注意,printf("%s \n", x[0]); 是无效的,因为 x[0] 的类型是 char,而 %s 需要一个 char * 类型。


4
@Kay,不要发表“非常感谢”的评论,尝试点击帖子旁边的上箭头。此外,还要在最佳答案旁边点击复选标记。 - Paul Tomblin

3
#include <stdio.h>

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

2

C语言中的字符串是一个字符数组,最后一个字符是空字符\0。当你在printf函数中使用%s格式化字符串时,它会从给定地址开始打印字符,并一直打印到遇到空字符为止。如果要打印单个字符,请使用%c格式化字符串。


0

由于C中的字符串是字符数组。 此语句将打印第一个字符。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接