1

我正在尝试打印出数组中的一个元素:

#include <stdio.h>

int main(void) {
    char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
    printf("%s", greeting[0]);
    return 0;
}

我希望它能够打印出来H,但它却崩溃了并且弹出了 Windows 对话框:

“program.exe 已停止工作”

我做错了什么?

4

3 回答 3

2

你应该写

printf("%c", greeting[1]);

写出单个字符 ( 'H') 而不是尝试打印字符串。您的程序崩溃是因为需要传递%s一个参数,但它的类型是.char*greeting[1]char

于 2013-09-29T22:06:38.237 回答
2

试试printf("%s", &greeting[1]);它应该打印“hello”:

1) "greeting" 是一个包含字符串 "Hello\0" 的字符数组。

2)你可以printf("%s\n", greeting);毫无问题地打电话。

3) "greeting[0]" 是数组中的第一个字符。"&greeting[0]" 是指向数组中第一个字符的指针。

printf("%s", s)期望 s 是一个指针,而不是一个字符。

4) 或者,您可能只想打印一个字符。在这种情况下,请尝试printf("%c", greeting[0]);

5)"%s"用于打印字符串,用于"c%"打印字符。使用"%d""0x%02x"打印字符的 ASCII 表示。'希望有帮助

于 2013-09-29T22:08:26.453 回答
1

你应该做:

printf("%c \n", greeting[1]);

打印字符的格式说明符是c. 所以要使用的格式字符串是%c.

于 2013-09-29T22:06:54.167 回答