C言語での基本的な関数の使用法

フォーマット付き出力 printf();

C言語では、printf関数を使用して様々な形式でデータを出力することができます。以下はその基本的な使い方です。

#include <stdio.h>

int main() {
    // 文字列の出力
    puts("こんにちは、世界!");
    
    // 整数の出力
    int value = 456;
    printf("整数: %i\n", value);
    
    // 浮動小数点数の出力(指定桁数まで)
    double pi_val = 3.14159265;
    printf("円周率: %.3f\n", pi_val);
    
    // 単一文字の出力
    char symbol = 'B';
    printf("文字: %c\n", symbol);
    
    // 文字配列の出力
    char message[] = "挨拶";
    printf("メッセージ: %s\n", message);
    
    // 十六進数による出力
    int hex_num = 1023;
    printf("十六進表示: %#x\n", hex_num);
    
    // フィールド幅と配置の調整
    int data = 78;
    printf("|%06d|%-6d|\n", data, data);
    
    // ポインタのアドレス出力
    int var = 123;
    int *address = &var;
    printf("アドレス: %p\n", (void *)address);
    
    // 真偽値の出力
    _Bool status = 1;
    printf("ステータス: %d\n", status);
    
    // 出力された文字数の取得
    int count;
    printf("テスト出力", &count);
    printf("\n出力された文字数: %d\n", count);

    return 0;
}

このコード例では、異なるデータ型に対するprintf関数の使用方法が示されています。

フィールド幅と配置の詳細【フィールド制御】

上記のコード内で%06d%-6dといった書式指定子が使われています。これらはそれぞれ次の機能を持っています:

  • %06d: 数値を最低6桁で表示し、不足分は先頭に0で埋めます。
  • %-6d: 数値を左寄せにして最小6桁で表示します。

標準入力 scanf();

scanf関数は、C言語において標準入力からデータを読み込むための関数です。以下の形式で利用されます。

基本構文:

int scanf(const char *format, ...);

主な変換指定子:

  • %d: 整数の入力
  • %f: 浮動小数点数の入力
  • %c: 文字の入力
  • %s: 空白を除く文字列の入力

例:

#include <stdio.h>

int main() {
    int age_input;
    char name_input[30];

    printf("年齢を入力してください: ");
    scanf("%d", &age_input);

    printf("名前を入力してください: ");
    scanf("%29s", name_input); // 安全のために最大長を設定

    printf("あなたは%sで、%d歳です。\n", name_input, age_input);

    return 0;
}

単一文字の入力 getchar();


getchar関数は、キーボードからの単一文字入力を処理するものです。

例:

#include <stdio.h>

int main() {
    printf("任意のキーを押してEnterを押してください: ");
    int key = getchar(); // 文字を読み込む
    printf("入力されたキー: %c\n", key);

    return 0;
}

注意点:

  • getcharはバッファリングされるため、前の入力後に残る改行\nに注意が必要です。

バッファの理解と問題解決

C言語では、scanfgetcharなどの関数が内部バッファを使用します。これにより、効率的なデータ処理が可能になりますが、場合によってはバッファ内に不要なデータが残ることがあります。

対策:

while ((getchar()) != '\n'); // 改行までのバッファクリア

多岐にわたる条件分岐 switch 文

switch文は、複数の選択肢の中から特定の処理を選ぶ際に便利です。

例:

#include <stdio.h>

int main() {
    int option = 3;

    switch (option) {
        case 1:
            puts("オプション1を選択");
            break;
        case 2:
            puts("オプション2を選択");
            break;
        case 3:
            puts("オプション3を選択");
            break;
        default:
            puts("該当するオプションはありません");
    }

    return 0;
}

文字列比較 strcmp();


strcmp関数は、2つの文字列を辞書順で比較します。

例:

#include <stdio.h>
#include <string.h>

int main() {
    const char *text1 = "リンゴ";
    const char *text2 = "みかん";

    if (strcmp(text1, text2) == 0) {
        puts("両方の文字列は一致しています");
    } else if (strcmp(text1, text2) < 0) {
        puts("最初の文字列が辞書順で先に来ます");
    } else {
        puts("二番目の文字列が辞書順で先に来ます");
    }

    return 0;
}

タグ: C言語 printf scanf

6月1日 19:58 投稿