c语言小问题求解
如图所示~
scanf会把换行留在缓冲区,a3收到回车换行,加上puts自动输出字符串换行,为什么只看到换了一行嘞?

c语言小问题求解
如图所示~
scanf会把换行留在缓冲区,a3收到回车换行,加上puts自动输出字符串换行,为什么只看到换了一行嘞?

根据参考链接,因为gets()把读取到的换行替换成了空字符'\0',所以下面使用puts()输出a3时,只输出了一个换行。
测试如下:
参考链接:
c/c++语言4种读入空格的方式_c++读取空格-CSDN博客
文章浏览阅读9.7k次,点赞4次,收藏18次。1.gets(s2); //这个常用的2.scanf( "%[^\n]", s ); //注意:连用时一定要加上 getchar() 吸收换行符3. int i=0; while(scanf("%c",&s1[i]),s1[i]!='\n')i++; s1[i]='\n';4.//用string库,调用getline, 直接读入一整行 getline(cin,a);二、C中(gets函数)可以无限读取,以回车结束读取。gets()函数..._c++读取空格
https://blog.csdn.net/qq_56040798/article/details/123621841
#include <stdio.h>
int main(void){
char a1[5],a2[5],a3[5],a4[6];
scanf("%s%s",a1,a2);
// https://blog.csdn.net/qq_56040798/article/details/123621841
// 根据参考链接,因为gets()会把读取到的换行,替换成空字符'\0',所以下面使用puts()输出a3时,只输出了一个换行
gets(a3);
gets(a4);
//
// for(int i=0;i<5;i++){
// printf("a1[%d]=%c,%d\n",i,a1[i],a1[i]);
// }
//
// for(int i=0;i<5;i++){
// printf("a2[%d]=%c,%d\n",i,a2[i],a2[i]);
// }
// for(int i=0;i<5;i++){
// printf("a3[%d]=%c,%d\n",i,a3[i],a3[i]);
// }
//
// for(int i=0;i<6;i++){
// printf("a4[%d]=%c,%d\n",i,a4[i],a4[i]);
// }
//
puts(a1);
puts(a2);
puts(a3);
puts(a4);
return 0;
}
