我正在尝试打印出数组中的一个元素:
#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 已停止工作”
我做错了什么?
我正在尝试打印出数组中的一个元素:
#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 已停止工作”
我做错了什么?
你应该写
printf("%c", greeting[1]);
写出单个字符 ( 'H'
) 而不是尝试打印字符串。您的程序崩溃是因为需要传递%s
一个参数,但它的类型是.char*
greeting[1]
char
试试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 表示。'希望有帮助
你应该做:
printf("%c \n", greeting[1]);
打印字符的格式说明符是c
. 所以要使用的格式字符串是%c
.