World\n"のように,ダブルクォーテーション(")で囲まれた文字の集まりのことを文字列といいます。文字列の後ろに付いている「\n」は改行コードを表すC言語の拡張表記です。World」の文字列の直後に,改行コードが出力されているのです。この改行コードは,メッセージの表示の際には通常必要です。改行コードがないと,実行終了後のシェルのプロンプトの位置がおかしくなったり,また,出力のバッファの関係で意図したタイミングで文字列が表示されないことがあります。バックスラッシュ(\)を使った文字コードの拡張表記には,改行コードの「\n」のほかに,いくつかの表記があります。詳しくはアスキーコード表を参照してください。これらの拡張表記は,コントロールコードのように,画面に直接表示できない文字を表記するために使用されます。"で囲まれた文字列中で「"」を使いたい場合は「\"」と表記し,「⁠\」自体は「\\」と表記します。バックスラッシュ(\)はOSや環境設定によっては(\)に見えますが,文字コード自体は同じであり,単に表示上の問題であるため,どちらも同じものと考えてください。\ソースファイルはフリーフォーマットC言語のソースファイルには,基本的には行の概念がありません。これは,アセンブラなどの行単位で記述されたソースファイルとは異なるところです。そもそも行というのは,改行コードで区切られた文字列ですが,C言語の文法では,改行コードだけでなく,スペースもTABも,みな同じように,単なる区切りのための文字として扱われます。改行の代わりにスペースを使って1行につなげても,逆にスペースだったところで改行して2行に分けても,C言語のプログラムとしてはまったく等価なのです。hello.cの改行位置などを変えて記述した奇妙なソースファイルの例を,リスト2.5(hello_strange_1.c)およびリスト2.6(hello_strange_2.c)に示します。これらはどちらも,もとのhello.cとC言語の文法的に等価です。;}このようにC言語のソースファイルは,プログラマが任意に改行・スペース・TABを入れてフリーのフォーマットで記述することができますが,一般的にはC言語の構文がわかりやすいようにインデント(字下げ)を行うなどの習慣があります。具体的には関数内や,次回以降に扱うif,for,whileなどの構文内では,行頭に複数のスペースまたはTABを入れてインデントします。具体的なソースのスタイルには,プログラマの好みの問題もあり,絶対的な基準はありません。,#includeなどのプリプロセッサのための行はフリーフォーマットではなく,「⁠#」は行の左端に書いて行の概念を持って記述しなければなりません。#defineを使ってみる「#include」のほかに「#define」というプリプロセッサの指令もあります。「⁠#define」を使えば,任意のマクロを定義して,プログラム中の文字列を置き換えることができます。World\n"と展開されます。hello.cを,「⁠#define」を使って書いた例をリスト2.7に示します。このように書いても,もとのhello.cとまったく同じプログラムとして動作します。0;}「#define」による文字列の置き換えは,C言語の文法とは関係なく行なわれます。「⁠#define」は,定数値をマクロとして定義したり,マクロ関数を定義したりするのに使われます。定数値を「#define」で定義する場合は,マクロ名を習慣的に大文字とします。World\n");という関数を使用しました。メッセージを表示するだけなら,標準ライブラリ関数のprintf()以外の関数を使うこともできます。World」というメッセージを表示します。fputs()関数の2番目の引数に書いてあるstdoutは,標準出力を表しており,これはインクルードしているstdio.hの中で定義されています。puts()関数の場合は,関数側でメッセージの最後に改行コードを付けてくれるため,printf()やfputs()とは違って,最後の「\n」を付ける必要がありません。World著者プロフィール山森丈範(やまもりたけのり)「C言語はアセンブラを触っているうちに自然に覚えてしまった」というプログラマ。C言語とのかかわり上,OSは専らUNIXを使用。C言語のプログラムでは,いつもLinux/FreeBSD/Solarisすべてで動くことを気に留めている。C言語と同様に移植性の高いシェルスクリプトにも思い入れが深く,著書に『シェルスクリプト基本リファレンス』がある。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。