演習課題「標準入力から 2 つの整数値を受け取ろう」
右のコードエリアの該当する行にコードを追加して、
標準入力からスペース区切りで 2 つの整数値を受け取って、それぞれ x 変数と y 変数に代入する処理を記述してください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
入力データ : 100, 200
演習課題「3 つの整数の和を求めよう」
標準入力から 3 つの整数がスペース区切りで与えられます。
これらの数値を足した結果を出力してください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
600
演習課題「文字列をスペース区切りで 5 分割しよう」
右のコードエリアでは、標準入力から 1 行分のデータを受け取るコードがあります。
入力された文字列を、スペース区切りで 5 つに分割して、出力してください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
abcd
efgh
ijkl
mnop
qrst
#08:sscanf で文字列を分割しよう
ここでは、sscanf で文字列を分割してみたいと思います。
#include <stdio.h>
int main(void)
{
char buf[100];
int x;
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &x);
printf("%d\n", x);
}
・sscanf では 変換指定に %d や %s を使うとスペースや改行が読み込まれません。
(最初の空白文字は読み飛ばして、文字列を読み込んで、スペースや改行があったらそこで読み込みを終了します。)
#include <stdio.h>
int main(void)
{
char str[] = "100 200 300";
int x, y, z;
sscanf(str, "%d %d %d", &x, &y, &z);
printf("%d\n", x);
printf("%d\n", y);
printf("%d\n", z);
}
・出力結果100
200
300
#include <stdio.h>
int main(void)
{
char str[] = "hello paiza learning";
char s1[10];
char s2[10];
char s3[10];
sscanf(str, "%s %s %s", s1, s2, s3);
printf("%s\n", s1);
printf("%s\n", s2);
printf("%s\n", s3);
}
・出力結果hello
paiza
learning
このチャプターで作成したコードです。// sscanf で文字列を分割しよう
#include <stdio.h>
int main(void)
{
char buf[100];
char s1[10];
char s2[10];
char s3[10];
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%s %s %s", s1, s2, s3);
printf("%s\n", s1);
printf("%s\n", s2);
printf("%s\n", s3);
}
- C言語入門 - 文字 char 型
https://webkaru.net/clang/character/
- データの読み込み(scanf関数)
http://home.a00.itscom.net/hatada/c01/stdio/scanf01.html
- 値取得・出力サンプルコード
https://paiza.jp/guide/samplecode