实现字母的大小写转换。多组输入输出
例
A
B
a
b
目录
getchar()
#include<stdio.h>
int main()
{
int ch = 0;
while (ch = getchar())
{
putchar(ch+32);
}
return 0;
}
原因是
从键盘敲A和回车(\n)到缓冲区,getchar从缓冲区首先拿的是A(A+32在ASCII表中对应的是a),又从 缓冲区拿了\n(\n+32在ASCII表中对应的是 *)
所以输出是:a*
解决方法:
再用一个getchar()读取回车
int main()
{
int ch = 0;
// EOF: end of file
//想让循环停止:Ctrl+Z
while ((ch = getchar()) != EOF)
{
putchar(ch+32);
getchar();//用来读取\n
printf("\n"); //换行
}
return 0;
}
改进
#include<stdio.h>
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
{
printf("%c\n",ch+32);
getchar();//用来读取\n
}
return 0;
}
scanf()
#include <stdio.h>
int main() {
char ch = 0;
while(scanf("%c ",&ch) != EOF)
{
printf("%c\n",ch+32);
}
return 0;
}
关于~scanf()在while循环中进行多组输入
#include <stdio.h>
int main() {
char ch = 0;
while(~scanf("%c ",&ch))
{
printf("%c\n",ch+32);
}
return 0;
}
EOF
EOF 在C语言中转到定义 其值为 (-1), end of file,文件的结束。
EOF is returned by an I/O routine when the end-of-file (or in some cases, an error) is encountered.
意思是:当遇到文件结尾(或在某些情况下,错误)时,I/O 进程会返回 EOF。
在终端进行多组输入时,按Ctrl+Z,可以使输入停下来。
- ~ 这是一个c语言操作符,按位取反。
while(scanf("%c",&ch) != EOF) 与 while(~scanf("%c",&ch)) 都可以进行多组输入输出。