我正在尝试在数组中使用单个字符,然后使用特定语法打印该字符。这是我的代码:
int main(){
char in[18];
scanf("%c",in);
printf("%c",in);
return 0;
}
我知道如何从C&许多其他方法来完成相同的任务,但我很想知道为什么这个代码在屏幕上什么都不打印。这是我对此代码的解释。如果错的话,请纠正我。
scanf
,字符存储在数组的第一个位置。(“in”指的是第一个元素的地址。)提前致谢!!
答案 0 :(得分:2)
byte alength;
if(Byte.TryParse(aa.SubString(1,aa.Length - 1), out alength))
{
//Great success! continue program
}
else
{
//Oops something went wrong!
}
未指向数组中的第一个元素。 是数组中的第一个元素。
in[0]
的类型为in
(传递给函数时),而char *
的类型为in[0]
。 char
的{{1}}格式说明符需要%c
,而不是printf
。
答案 1 :(得分:1)
您的代码调用未定义的行为,编译器可能会警告"%c"
说明符需要char
这一事实(严格地说它需要int
参数。转换为unsigned char
)参数,但您传递了char *
( char
数组)。
使其打印字符使用
printf("%c", in[0]);
为printf()
和scanf()
中的给定格式说明符传递错误的类型是未定义的行为。