演習課題「標準入力から整数値を受け取ろう」
右のコードエリアには、入力された整数値を変数に代入して、出力するプログラムがあります。
このプログラムは未完成です。該当する行にコードを追加して、プログラムを完成させてください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
入力データ : 100
演習課題「標準入力から配列データを読み込もう」
右のコードエリアには、標準入力から配列データを読み込むプログラムがあります。
このプログラムは未完成です。該当する行にコードを追加してください。
ただし、入力は以下のように 1 行目に要素数 (20 以下の数)、2 行目以降に配列のデータが与えられます。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
data[0] : 10
data[1] : 20
data[2] : 30
#07:標準入力から配列データを読み込もう
ここでは、標準入力から受け取った複数行のデータを配列に読み込む方法について学習します。
// 整数データを読み込む
#include <stdio.h>
int main(void)
{
char buf[100];
int n;
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &n);
printf("入力データ : %d\n", n);
}
sscanf の第 3 引数にはアドレスを指定するので、変数 n のアドレス &n を入力しています。
define マクロを使うと、配列の大きさを後から変更するときなどに便利です。#include <stdio.h>
#define N 10 // define マクロ
int main(void)
{
char buf[100];
fgets(buf, sizeof(buf), stdin);
char str[N]; // ここの N が書き換わる
sscanf(buf, "%s", str);
printf("hello %s\n", str);
}
マクロ名は見分けがつきやすいように、N などの大文字を使うのが一般的です。
また、変数ではないため、実行時に N の値を書き換えることはできません。
// 標準入力から配列データを読み込もう
#include <stdio.h>
#define N 20
int main(void)
{
char buf[100];
int n;
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &n);
printf("データ数 : %d\n", n);
int data[N];
for (int i = 0; i < n; i++) {
int x;
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &x);
data[i] = x;
}
for (int i = 0; i < n; i++) {
printf("%d\n", data[i]);
}
}
- C言語入門 - scanf関数の変換指定子
https://webkaru.net/clang/scanf-format-specifiers/
- C言語 - C言語のマクロの基本について
http://www.c-lang.org/detail/macro_basic.html
- C 言語リファレンス
https://msdn.microsoft.com/ja-jp/library/fw5abdx6.aspx