为什么字符型数组输入用%c占位符会出错,而用%s就可以正常运行?

#include

int main()
{

  int couple;
  char M[1000];
  scanf("%d", &couple);

  //scanf("%s", &M[0]); 为什么这里用%s才能保证输入的数据赋值给M[0]
  scanf("%c", &M[0]);

  printf("%c\n", M[0]);
  return 0;
}

scanf("%c", &M[0]); 只是输入一个字符而已啊
%s才是输入一个字符串

scanf()函数详细说明,供参考:https://baike.baidu.com/item/scanf/10773316?fr=aladdin
代码修改如下,原因见注释:

#include <stdio.h>
int main()
{
    int couple;
    char M[1000];
    scanf("%d", &couple);

    //scanf("%s", &M[0]); //为什么这里用%s才能保证输入的数据赋值给M[0]
                          //scanf()用%s读入字符串时,它会把空格,换行符等略过。

    scanf(" %c", &M[0]); //这里不是用%c占位符会出错,而是前面scanf("%d", &couple);执行完后,
    //scanf("%c", &M[0]);//一个换行符'\n'残留在输入缓冲区中,到这句用%c读入时,把它作为一个
                         //字符读入了。所以这句在"%c"这里加入一个空格:" %c" ,就可以解决这个
                         //问题。

    printf("%c\n", M[0]);

    return 0;
}