在C中将字符扫描成数组

时间:2016-02-19 13:03:13

标签: c arrays char printf scanf

我正在尝试在数组中使用单个字符,然后使用特定语法打印该字符。这是我的代码:

int main(){
char in[18];
scanf("%c",in);
printf("%c",in);
return 0;
}

我知道如何从C&许多其他方法来完成相同的任务,但我很想知道为什么这个代码在屏幕上什么都不打印。这是我对此代码的解释。如果错的话,请纠正我。

  1. 首先声明18个字符的数组。
  2. 使用scanf,字符存储在数组的第一个位置。(“in”指的是第一个元素的地址。)
  3. 然后当我试图打印那个角色时,它什么都不打印。
  4. 当我将“in”更改为“in [0]”时,字符会在屏幕上打印。
  5. 我认为“in”也指向第一个元素以及[0]。那为什么我得到两个不同的答案。 ?
  6. 提前致谢!!

2 个答案:

答案 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()中的给定格式说明符传递错误的类型是未定义的行为。