C言語で単一文字の車のリターンブロックを入力する問題を解決します。
C言語のscanf()関数は、入力した文字を受信すると、前回入力したリターン記号を今回入力した文字として扱い、正確な文字データの入力ができなくなります。これは恐らく初学Cの子供靴のドアで一番頭が痛い問題です。
今日は参考までに四つの解決方法を提供します。
1、scanf()で'バックシールド記号を使用します。
scanf("%d"、&n)///フィルターを使って車に戻ります
scanf("%c"、&c);
2、scanf()のフォーマット列の一番前にスペースを追加し、車を返す文字を遮断する。
scanf("%d"、&n);
scanf("%c"、&c)//%c前にスペースを入れて、ろ過して車に戻ります。
3、文字を受け取る前に、getar()を使って車のリターン記号を読み取ります。
補足知識:C言語でscanf()を使って文字を入力する問題
1.文字列を入力する
2.入力文字
解決策
getar()を使って余分な車を吸収します。
今日は参考までに四つの解決方法を提供します。
1、scanf()で'バックシールド記号を使用します。
scanf("%d"、&n)///フィルターを使って車に戻ります
scanf("%c"、&c);
2、scanf()のフォーマット列の一番前にスペースを追加し、車を返す文字を遮断する。
scanf("%d"、&n);
scanf("%c"、&c)//%c前にスペースを入れて、ろ過して車に戻ります。
3、文字を受け取る前に、getar()を使って車のリターン記号を読み取ります。
scanf("%d",&n);
getchar(); //
scanf("%c",&c);
4、文字を受け取る前に、フローの中のバッファの内容をfflush()でクリアします。
scanf("%d",&n)
fflush(stdin); // , #include <stdlib.h>
scanf("%c",&c);
もうこれからはこの問題に悩まさなくてもいいです。補足知識:C言語でscanf()を使って文字を入力する問題
1.文字列を入力する
#include<stdio.h>
int main() {
int a;
char s1[100];
char s2[100];
scanf("%d", &a);
scanf("%s", s1);
scanf("%s", s2);
printf("a = %d
", a);
printf("s1 = %s
", s1);
printf("s2 = %s
", s2);
return 0;
}
入力
2019
hello
world
出力
a = 2019
s1 = hello
s2 = world
大丈夫です。scanf(「%s」)は改行符によって自動的にスキップされます。2.入力文字
#include<stdio.h>
int main() {
int a;
char s1;
char s2;
scanf("%d", &a);
scanf("%c", &s1);
scanf("%c", &s2);
printf("a = %d
", a);
printf("s1 = %c
", s1);
printf("s2 = %c
", s2);
return 0;
}
入力
2019
A
B
出力
a = 2019
s1 =
s2 = A
s 1が2019の後のエコー'を吸収したのが見えます。その理由はscanf(%c)が単一文字を読む時、スペースとエコーは全部単一文字とみなされます。解決策
getar()を使って余分な車を吸収します。
#include<stdio.h>
int main() {
int a;
char s1;
char s2;
scanf("%d", &a);
getchar(); // "
"
scanf("%c", &s1);
getchar(); // "
"
scanf("%c", &s2);
printf("a = %d
", a);
printf("s1 = %c
", s1);
printf("s2 = %c
", s2);
return 0;
}
タンデムの中で車をろ過します。
#include<stdio.h>
int main() {
int a;
char s1;
char s2;
scanf("%d
", &a); //
scanf("%c
", &s1);
scanf("%c", &s2);
printf("a = %d
", a);
printf("s1 = %c
", s1);
printf("s2 = %c
", s2);
return 0;
}
以上の問題はC言語で文字を入力して車のリターンをブロックすることです。小編集は皆さんのすべての内容を共有しています。参考にしていただければと思います。どうぞよろしくお願いします。