広告スペース(バナー)
🔧C言語 レッスン
基本文法の基礎8▾
データ構造とオブジェクト指向7▾
構文の基本を深める9▾
関数とデータ構造の応用9▾
アルゴリズムとテストの基礎8▾
文字列・数値操作の応用8▾
実務で役立つ機能8▾
レッスン 39 / 68
文字列の正規化(空白除去・大文字小文字の統一)
このレッスンでは、C言語で文字列を正規化する方法を学び、表記ゆれを統一して比較できるようになることを目標にします。「C言語 文字列 正規化」で調べている方向けです。
ユーザーが入力した文字列には、前後の余分な空白や、大文字・小文字の表記ゆれが含まれがちです。isspace()で空白を判定し取り除き、大文字小文字を統一することを正規化と呼びます。
サンプルコードでは、normalize()関数の中でisspace((unsigned char)*src)を使って前後の空白を判定しながら取り除き、文字を1つずつ小文字に変換しています。ctype.hヘッダの文字判定関数を使っている点にも注目してみましょう。
初心者がよくつまずくのが、isspace()にキャストが必要な点です。char型が符号付きの環境では、日本語などのマルチバイト文字の一部を渡すと未定義動作になるため、(unsigned char)にキャストするのが安全な作法です。
実際の開発現場では、入力チェックやログイン処理などで欠かせない、実務でも頻出の基本テクニックとして正規化処理が使われます。
📖 お手本コード
✍️ あなたのコード
コードを書いたら「実行する」を押してください
🧪 このサイトではC言語を直接コンパイル・実行できないため、お手本コードと同じ内容を入力できたかをその場で判定します(採点はブラウザ内だけで行われ、どこにも送信されません)。
🎯
ここまでできればゴール達成!
表記のゆれを吸収して、ユーザー入力を正しく比較できるようになります。
表記のゆれを吸収して、ユーザー入力を正しく比較できるようになります。
広告スペース(バナー)
広告スペース(記事内)