关于输入、输出字符(串)的一些细节问题

(1)关于scanf

     scanf("%s",s)/*假设s为字符型数组*/,该函数遇到回车或空格输入结束,并自动将输入的数据和字符串结束符'\0'输入数组中。这里特别需要注意一点的是输入单个字符,即scanf("%c",c)时,在其后面最好习惯性加上一个getchar()来回收回车,因为程序遇到scanf()时不是直接要用户输入,而是先看输入缓冲区内是否还有东西,像“空格、回车”都在读取之列。

(2)关于gets(s)

      参数s是数组名,函数从输入得到一个字符串,遇到回车输入结束,自动将输入的数据和字符串结束符'\0'输入数组中。实际上函数gets()有返回值,如果输入成功时其返回值为字符串第一个字符的地址。

值得注意的是gets()函数可能会输入过多字符,导致数组越界,在程序运行时出现错误。

(3)  关于printf()

   该函数遇到'\0'结束;

(4)关于puts()

     输出遇'\0'自动将其转换为'\n',即输出字符串后换行。

 

posted @ 2018-07-29 16:50  追梦光者  阅读(256)  评论(0编辑  收藏  举报