C/C++のデータ型と書式を知る:入力の書式
沖林正紀
2008/02/27 08:00
データ入力の書式はほとんど出力の場合と同じだが、少しだけ異なるところもある。
データを入力する関数
まず、データを入力するときに用いるscanf()関数について紹介しておきたい。これはキーボードなどの標準入力からデータの入力を受け付ける。この中で前回紹介したような書式を表す文字列を用いる。
キーボードから半角10文字までの文字列を入出力する例を以下に示す。
#include
..........
char a[11]; /* 半角10文字分の文字列を保持する変数(配列) */
scanf( "%s", a ); /* 変数aに文字列を入力 */
printf( "%s\n", a ); /* 変数aの値を出力 */
まず、データを入力するには、入力されたものをプログラム内で保持しておくために変数が必要だ。scanf()関数は、書式にしたがって入力したデータを変数に代入して保持させる。戻り値は代入した値の数だが、うまく入力ができなかったときはEOFという特別な値となる。
複数の値の入力
複数の値を入力する場合は、データを保持する変数も複数必要だ。たとえば半角10文字までの文字列を入出力する場合の例を以下に示す。
char a[11], b[11]; /* 半角10文字分の文字列を保持する変数(配列) */
scanf( "%s %s", a, b ); /* 変数a, bに文字列を入力 */
printf( "%s %s\n", a, b ); /* 変数a, bの値を出力 */
出力の書式で”%s %s”と記述されているときは、2つの文字列の間に1つの半角空白が出力される。しかし、入力の書式におけるこの空白は、データの区切りを意味する。具体的には、空白以外に改行やタブ(Tab)でもよい。改行やタブもASCIIコードに含まれる、れっきとした文字の一種(制御文字)であることを思い出してほしい。
また、2つの文字列の間に入るこれらの区切りは、複数で連続している場合、それを書式上の1つの区切りとする。そのため、これらも文字列の一部として入力したい場合は、別の方法が必要となる。
- コメント(3件)
#1 ちゃっぴ
- 2008/03/29 22:46
scanf を教える必要があるでしょうか?より、現実的な fgets, sscanf を教えるべきでは?
どうしても scanf にこだわるのであれば、書... 続きを見る
» 不適切なコメントを報告する
#2 はつね
- 2008/04/01 21:56
入力の書式ということでscanfを取り上げるのであれば、char a[11];に対する"%10s"を説明しなければならないと思います。また、それを指... 続きを見る
» 不適切なコメントを報告する
#3 性悪狐
- 2008/04/01 23:38
他の方のコメントの内容も当然のことなのですが、こんな大嘘を書いてはいけませんね。
>たとえば”%s,%s”とすれば、”abc def,ghi”を”ab... 続きを見る
» 不適切なコメントを報告する
- 特集: C/C++のイロハ:メモリ管理からオブジェクト指向まで (15件)
- ホワイトペーパー
- 企画特集
- 話題のタグ
アプリケーション
UI
iPhone 3G
脆弱性
Opera
Ajax
Windows Vista
linux
リファレンス
Windows
Windows XP
google
iPhone
ブラウザ
データベース
Tips
Windows 7
Webサービス
Microsoft
javascript
プログラミング言語
Chrome
マイクロソフト
Internet Explorer
クラウド
RIA
iPod touch
OS
インストール
ソフトウェア開発
セキュリティ
Database
Flash
java
Safari
Off Topic
小技
Webデザイン
Apple
Firefox 3
php
HTML
オープンソース
WebKit
Firefox
開発環境
Mac OS X
Mozilla
CSS
仮想化
話題のタグを見る »
SQLite対応アプリのデータベースファイルを閲覧する
グーグル、「Google Buzz」を発表--Gmailのソーシャル機能を強化
「H.264」ストリーミングのロイヤリティ無料期間が延長
マイクロソフト、「Office 2010」のRC版をリリース
アプリケーション仮想化 3つの課題
利用者の理想を追求した最新レンタルサーバ
Xbox Live インディーズゲーム開発の軌跡
事例 VMwareでデータセンターをクラウド化
DBのパフォーマンスに困ってませんか?
仮想環境のバックアップは難しいのか
通販サイトのアクセス集中からの危機を救う
身近な業務をCRMが変革!
仮想化をダメにするストレージの実態
アンケートから見るセキュリティ対策の実態
御社はまだフリーの転送サービスですか?
経営統合後の事業損益構造の見える化を実現
レガシーアプリケーションの稼働どうしてる?
新しい視点のレンタルサーバが誕生!