C言語で文字列⇔数値の相互変換を行う方法|sscanf関数とsprintf関数の使い方
はじめに
C言語のプログラミングにおいて、「文字列から数値への変換」および「数値から文字列への変換」とは何を意味するのでしょうか?本記事では、標準ライブラリ関数を使った双方向の変換方法を、構文・サンプルコード・実行結果とあわせて解説します。
解決策:使用する2つの関数
C言語には、この変換を実現するための関数が用意されています。
- sscanf() ― 文字列を数値に変換する
- sprintf() ― 数値を文字列に変換する
文字列から数値への変換(sscanf)
sscanf()関数を使うことで、文字列として格納されたデータを、書式指定子に従って解析し、数値として各変数に読み込むことができます。scanf()との違いは、入力元がキーボードではなく文字列である点です。
構文
sscanf(文字列名, "制御文字列", 変数リスト);
制御文字列内の書式指定子(例:%d)に基づいて文字列が解析され、対応する変数のアドレスへ順番に値が代入されます。
サンプルコード
#include <stdio.h>
int main(void) {
char a[20] = "02 01 2010";
int day, mon, yr;
sscanf(a, "%d %d %d", &day, &mon, &yr);
printf("Day = %02d\n", day);
printf("Month = %02d\n", mon);
printf("Year = %d\n", yr);
return 0;
}実行結果
Day = 02 Month = 01 Year = 2010
この例では、日付を表す文字列 "02 01 2010" を、日・月・年の3つのint型変数に分割して格納しています。
数値から文字列への変換(sprintf)
sprintf()関数を使うと、複数の数値データを書式に従って整形し、1つの文字列として配列に書き込めます。printf()とほぼ同じ働きをしますが、画面に出力する代わりに文字配列へ結果を保存する点が異なります。
構文
sprintf(文字列名, "制御文字列", 変数リスト);
サンプルコード
#include <stdio.h>
int main(void) {
char a[50];
int day = 2;
int mon = 1;
int yr = 2010;
sprintf(a, "%02d/%02d/%d", day, mon, yr);
printf("今日の日付 = %s\n", a);
return 0;
}実行結果
今日の日付 = 02/01/2010
書式指定子 %02d を使うことで、桁数が1桁の場合でも先頭に0を補って「02」「01」のように出力できます。
まとめ
- sscanf():文字列 → 数値。書式に従って文字列を解析し、変数へ格納する。
- sprintf():数値 → 文字列。書式に従って整形し、文字配列へ書き込む。
この2つの関数を使いこなせば、C言語における文字列と数値の相互変換を簡単に実装できます。なお、バッファオーバーフローを防ぐ観点から、実際の開発では書き込みサイズを指定できる snprintf() の利用も推奨されます。
-
C++で文字列の部分文字列の総数を求める方法を解説
この記事では、与えられた文字列から作成できる空でない部分文字列の個数を求める方法について解説します。入力 : string = "moon" 出力 : 10 説明 : 部分文字列は m、o、o、n、mo、oo、on、moo、oon、moon の 10 個です。 入力 : string = "yellow" 出力 : 21解法のアプローチ文字列の長さを n とします。上の例からも分かるように、考えられるすべての部分文字列の個数を求めるには、長さ n、(n-1)、(n-2)、(n-3)、……2、1 の部分文字列の個数を順に加算していく必要があります。部分文
-
【初心者向け】iPhoneのSiriをセットアップして使いこなす完全ガイド
AmazonにはAlexa、GoogleにはGoogleアシスタント、MicrosoftにはCortanaがありますが、Appleには独自のバーチャルアシスタント「Siri」があります。すべてのAppleデバイスで活躍できるSiriは、Appleユーザーの間で急速に人気を集めています。 Siriは質問に答えるだけでなく、さまざまな機能を実行してくれる頼もしい存在です。Siriの有効化とセットアップはとても簡単で、必要なのは数分の時間と静かな環境だけです。 この初心者向けガイドでは、Siriを有効化する手順、基本的な使い方、活用できる場面、そして動作しなくなった場合の対処法まで詳しく解説します。