【C言語】getchar()、scanf()、EOFは文字の大文字小文字変換を実現します。複数の入力と出力のセット

文字の大文字と小文字の変換を実装します。複数の入力と出力のセット

A
B
a
b

目次

getchar() 

scanf()

終了後 

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;
}

while ループ内の複数の入力セットに対する ~scanf() について

 

#include <stdio.h>

int main() {
    char ch = 0;
    while(~scanf("%c ",&ch))
    {
        printf("%c\n",ch+32);
    }
    return 0;
}

終了後 

EOF は C 言語の定義に進み、その値は (-1)、ファイルの終わり、ファイルの終わりです。

EOF は、ファイルの終わり (場合によってはエラー) が発生したときに、I/O ルーチンによって返されます。

意味: ファイルの終わり (場合によってはエラー) が発生すると、I/O プロセスは EOF を返します。

ターミナルで複数の入力を行う場合、Ctrl+Zを押すと入力が中止されます。

  • ~ これは C 言語の演算子、ビットごとの否定です。

 

while(scanf("%c",&ch) != EOF) と while(~scanf("%c",&ch)) は両方とも、複数の入出力セットを実行できます。

おすすめ

転載: blog.csdn.net/qq_72505850/article/details/131521920