【C语言】getchar() 与scanf() ,EOF,实现字母的大小写转换。多组输入输出

实现字母的大小写转换。多组输入输出

A
B
a
b

目录

getchar() 

scanf()

EOF 

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)) 都可以进行多组输入输出。

猜你喜欢

转载自blog.csdn.net/qq_72505850/article/details/131521920