0Pricing
C Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. printf の書式指定子
  2. scanf と入力
  3. 幅、精度、フラグ
  4. よくある I/O の落とし穴
← C Academyに戻る