在 C 中将字符扫描到数组中
Scanf a Character into an Array in C
我正在尝试获取数组中的单个字符,然后使用特定语法打印该字符。这是我的代码:
int main(){
char in[18];
scanf("%c",in);
printf("%c",in);
return 0;
}
我知道如何使用 C 和许多其他方法从用户那里获取字符来完成相同的任务,但我很想知道为什么这段代码在屏幕上不打印任何内容。这是我对这段代码的解释。如有不妥欢迎指正
- 首先声明了 18 个字符的数组。
- 使用
scanf
,字符存储在数组的第1个位置。("in"指的是第一个元素的地址。)
- 然后当我试图打印那个字符时,它什么也打印不出来。
- 当我将 "in" 更改为 "in[0]" 时,字符会打印在屏幕上。
- 我认为 "in" 也指向第一个元素以及在 [0] 中。那么为什么我得到两个不同的答案。 ?
提前致谢!!
您的代码调用了未定义的行为,编译器可能会警告 "%c"
说明符需要 char
(严格来说它需要 int
参数转换为 unsigned char
) 参数但你传递了一个 char *
(char
的数组)。
要使其打印字符,请使用
printf("%c", in[0]);
在 printf()
和 scanf()
中为给定的格式说明符传递错误的类型是未定义的行为。
in[0]
不指向数组中的第一个元素。它是数组中的第一个元素。
in
的类型为 char *
(传递给函数时),而 in[0]
的类型为 char
。 printf
的 %c
格式说明符需要 char
,而不是 char *
。
我正在尝试获取数组中的单个字符,然后使用特定语法打印该字符。这是我的代码:
int main(){
char in[18];
scanf("%c",in);
printf("%c",in);
return 0;
}
我知道如何使用 C 和许多其他方法从用户那里获取字符来完成相同的任务,但我很想知道为什么这段代码在屏幕上不打印任何内容。这是我对这段代码的解释。如有不妥欢迎指正
- 首先声明了 18 个字符的数组。
- 使用
scanf
,字符存储在数组的第1个位置。("in"指的是第一个元素的地址。) - 然后当我试图打印那个字符时,它什么也打印不出来。
- 当我将 "in" 更改为 "in[0]" 时,字符会打印在屏幕上。
- 我认为 "in" 也指向第一个元素以及在 [0] 中。那么为什么我得到两个不同的答案。 ?
提前致谢!!
您的代码调用了未定义的行为,编译器可能会警告 "%c"
说明符需要 char
(严格来说它需要 int
参数转换为 unsigned char
) 参数但你传递了一个 char *
(char
的数组)。
要使其打印字符,请使用
printf("%c", in[0]);
在 printf()
和 scanf()
中为给定的格式说明符传递错误的类型是未定义的行为。
in[0]
不指向数组中的第一个元素。它是数组中的第一个元素。
in
的类型为 char *
(传递给函数时),而 in[0]
的类型为 char
。 printf
的 %c
格式说明符需要 char
,而不是 char *
。