当前位置: 代码迷 >> 综合 >> 字符数组 scanf(),gets(),getchar()的区别
  详细解决方案

字符数组 scanf(),gets(),getchar()的区别

热度:58   发布时间:2023-12-02 20:38:27.0

一. scanf()

    1.scanf(“%c”,&c)    

#include<stdio.h>
int main(){int  i,j;char a[10][10];for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%c",&a[i][j]);printf("----------\n");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%c",a[i][j]);printf("\n");}return 0;
}

输入的其实是 :123\n456\n789\n

输出的是: 123 \n   \n45 \n  6\n7         总的说这个可以获取空格和换行

2.scanf("%s",s)

#include<stdio.h>
int main(){int  i,j;char a[10][10];for(i=0;i<3;i++)scanf("%s",a[i]);printf("----------\n");for(i=0;i<3;i++)printf("%s\n",a[i]);return 0;
}

 这个获取空格或换行相当于结束一行字符串输入,将输入下个字符串

二.gets()

#include<stdio.h>
int main(){int  i,j;char a[10][10];for(i=0;i<3;i++)gets(a[i]);printf("----------\n");for(i=0;i<3;i++){puts(a[i]);printf("\n");}return 0;
}

发现gets()只遇到换行才结束,遇到空格将保留下来,换行也保留下来了

 

三.getchar()

#include<stdio.h>
int main(){int  i,j;char a[10][10];for(i=0;i<3;i++)for(j=0;j<3;j++)a[i][j]=getchar();printf("----------\n");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%c",a[i][j]);printf("\n");}return 0;
}

和第一个一样,也是空格和换行都保留下来.

 

 

总结:虽然简单,但过个年又忘记了,还是记录下来比较好,下次在看就方便多了.gets()会保留空格和换行,scanf(“%s”,s)遇到空格或换行就结束,且不保留空格和换行,而getchar()与scanf(“%c”,c)就一样了,只是一个是字符形式一个是标准格式,都是会保留空格和换行。