scanf と入力
ユーザー入力を読み取ります。
「scanf と入力」はCoddyKit上の無料C Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C Academyコースには全4レッスンが含まれています。
scanfの動作
scanfは、ユーザーが入力した書式付きの入力を読み取ります。printfと同じ書式指定子を使います。
#include <stdio.h>
int main(void) {
int x = 0;
/* scanf("%d", &x); */
x = 5;
printf("x = %d\n", x);
return 0;
}アドレス演算子
scanfは、値を保存するために変数のアドレスを必要とします。そのため、&xと記述します。
#include <stdio.h>
int main(void) {
int x = 42;
int *p = &x;
printf("value via address = %d\n", *p);
return 0;
}整数を読み取る
整数を読み取るには、%dとintのアドレスを渡します。
#include <stdio.h>
int main(void) {
int n;
/* scanf("%d", &n); */
n = 7;
printf("You entered %d\n", n);
return 0;
}浮動小数点数を読み取る
floatを読み取るには%fを、doubleを読み取るには%lfを使います。
#include <stdio.h>
int main(void) {
double d;
/* scanf("%lf", &d); */
d = 3.14;
printf("d = %.2f\n", d);
return 0;
}複数の値を読み取る
1つのscanfで、空白で区切られた複数の値を読み取れます。
#include <stdio.h>
int main(void) {
int a, b;
/* scanf("%d %d", &a, &b); */
a = 3; b = 4;
printf("sum = %d\n", a + b);
return 0;
}文字を読み取る
1文字を読み取るには%cを使います。ただし、空白や改行も読み取ることに注意してください。
#include <stdio.h>
int main(void) {
char c;
/* scanf(" %c", &c); */
c = 'X';
printf("char = %c\n", c);
return 0;
}単語を読み取る
%sは、空白で区切られた単語をchar配列に読み取ります。配列名はすでにアドレスになっているため、&は必要ありません。
#include <stdio.h>
int main(void) {
char word[20];
/* scanf("%s", word); */
word[0] = 'H'; word[1] = 'i'; word[2] = 0;
printf("word = %s\n", word);
return 0;
}scanfの戻り値
scanfは、正常に読み取れた項目数を返します。不正な入力を検出するために、戻り値を確認してください。
#include <stdio.h>
int main(void) {
int n = 5;
int read = 1; /* pretend scanf returned 1 */
if (read == 1)
printf("got %d\n", n);
return 0;
}先頭の空白を読み飛ばす
数値用の書式指定子は先頭の空白を自動的に読み飛ばしますが、%cは読み飛ばしません。%cの前に空白を入れると、この問題を解決できます。
#include <stdio.h>
int main(void) {
char c = 'Y';
printf("Reading with \" %%c\" skips spaces\n");
printf("c = %c\n", c);
return 0;
}入力の検証
データを信頼する前に、必ず戻り値を確認してください。
#include <stdio.h>
int main(void) {
int value = 10;
int ok = 1;
if (ok)
printf("valid: %d\n", value);
else
printf("invalid input\n");
return 0;
}組み合わせる
一般的なプログラムは、値の入力を促し、読み取り、その値を使用します。
#include <stdio.h>
int main(void) {
int age;
printf("Enter age: ");
/* scanf("%d", &age); */
age = 20;
printf("Next year you will be %d\n", age + 1);
return 0;
}クイックチェック
scanfについての理解度を確認しましょう。
まとめ:scanfと入力
ユーザー入力を読み取る方法を学びました。
scanfではprintf形式の指定子を使用します- 格納先を知らせるために
&varを渡します - doubleには
%lf、単語には%sを使用します - 入力を検証するために戻り値を確認します
- 空白文字を読み飛ばすには
%cの前にスペースを入れます
よくある質問
「scanf と入力」レッスンは無料ですか?
はい。「scanf と入力」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C Academyコースには全4レッスンが含まれています。
「scanf と入力」で何を学びますか?
ユーザー入力を読み取ります。 ブラウザで直接実行するハンズオンコードでC Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「scanf と入力」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC Academyレッスンでコードを書いて実行できますか?
はい。すべてのC Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- printf の書式指定子
- scanf と入力
- 幅、精度、フラグ
- よくある I/O の落とし穴