getchar,scanf, gets重点区别
单个字符 getchar 和scanf
简要的总结一下:
1.scanf("%c", &ch) 与 ch = getchar() 用法完全相同
2.scanf("%c %c", &a, &b); 只有在中间存在空格时才能在输入情况下忽略空白,
在scanf("%c%c", &a, &b);情况下和不断地getchar()效果是一样的。
#include <stdio.h>
#include <stdlib.h>
int main()
{
#if 0
char ch1, ch2;
scanf("%c", &ch1);
scanf("%c", &ch2);
printf("%d %d\n", ch1, ch2);
#endif
#if 0
char ch1, ch2;
ch1 = getchar();
ch2 = getchar();
printf("%d %d\n", ch1, ch2);
#endif
#if 1
char ch1, ch2;
//注意第一个scanf里面的空格,这里的空格表示可以无视掉任意个 空格,制表符,回车符
scanf("%c %c", &ch1, &ch2);
printf("%d %d\n", ch1, ch2);
//这里scanf的%c之间没有空格表示并不会忽略空白
//scanf("%c%c", &ch1, &ch2);
//printf("%d %d\n", ch1, ch2);
#endif
return 0;
}
字符串 scanf与gets
对于scanf仍然要明白遇到空白时结束,而针对gets则是无视 空白
#include <stdio.h>
#include <stdlib.h>
int main()
{
#if 0
char str1[20], str2[20];
scanf("%s", str1);
printf("%s\n", str1);
scanf("%s", str2);
printf("%s", str2);
#endif
char str1[20], str2[20];
gets(str1);
printf("%s\n", str1);
gets(str2);
printf("%s", str2);
return 0;
}